J'ai un scénario que je souhaite exécuter une directive personnalisée sur le DOM que ng-bind-html
crée.
En principe, je dois personnaliser le comportement de la balise html <a>
car le html en cours de chargement est dangereux et lorsque l'utilisateur clique sur le lien pour exécuter certaines fonctions avant que quelque chose ne se produise, aka, l'événement de clic de jqLite.
Donc, mon idée originale a été de créer une directive qui modifie le comportement de tout <a>
dans le conteneur que j'ai mis l'attribut de ma directive.
Cela fonctionne bien, jusqu'à ce que je combine avec ng-bind-html
, ma directive s'exécute avant que ng-bind-html
compile la chaîne en html et attaché au DOM.
Alors, est-ce que n'importe quelle façon d'exécuter ma directive personnalisée après la course ng-bind-html
?
DEMO
HTML:
<div ng-app="myApp" ng-controller="myCtrl"> <div ng-bind="sometext" my-directive>before</div> </div>
Manette:
angular.module('myApp', []); angular.module('myApp').controller('myCtrl', function($scope) { $scope.sometext="stuff here"; });
Directif:
angular.module('myApp').directive('myDirective', function() { return { priority: 10, // adjust this value ;) link: function(scope,element,attrs) { scope.$watch(attrs.ngBind, function(newvalue) { console.log("element ",element.text()); }); } }; });
Utilisez la propriété de priority
dans la directive pour exécuter votre code après mg-bind