I am trying to create a custom directive which extends the functionality of an existing element. I would like to detect if a certain attribute exists and if not then add it (e.g. ng-class).
I have tried to achieve this during pre-compilation but angular does not react to the addition of the new attribute.
I created a plunker with a simple example using ng-hide.
<input hide type="submit" value="Submit"/>
app.directive('hide', function() { return { restrict: 'A', compile: function(){ return { pre: function(scope, element, attributes, controller, transcludeFn){ attributes.$set("ng-hide", true); }, post: function(scope, element, attributes, controller, transcludeFn){ } } }, }; });
If I add ng-hide="true" in the html then the submit button is hidden correctly. If I leave it to the directive then I can see that the DOM has the element set up correctly but the element is not hidden:
<input hide="" type="submit" value="Submit" ng-hide="true">
Any help appreciated!
You can do this in the linking function by
For example:
As can be seen on http://plnkr.co/edit/tHNvCxVn2wURO38UtI0n?p=preview