我正在编写一个 Angular 指令来包装我想在我的应用程序中使用的第三方插件。该插件需要读取分配给我使用自定义指令的元素的类。在标记中进行静态类分配时,我可以很好地访问类属性;但是如果我用来ngClass
动态地为我的元素分配一个额外的类,它对我的自定义指令是不可见的。
我写了一个简单的 plunkr 来演示以下问题:
http://plnkr.co/edit/i5iBwlKXuvrdjF85wiIU?p=preview
但它的主旨包含在这里:
<body ng-controller="MainCtrl">
<div class="staticAssignment"
ng-class="cssClass"
my-directive>
</div>
</body>
和:
app.controller('MainCtrl', function($scope) {
$scope.cssClass = 'dynamicAssignment';
});
app.directive("myDirective", function () {
return {
link: function (scope, element, attr) {
console.log("my classes: ", element.attr('class'))
}
};
});
当指令的link
函数执行时,我希望它记录:
"staticAssignment dynamicAssignment"
,但是在链接时看不到动态分配的类。
link
将我的函数内容包装在 a 中$timeout
解决了这个问题,但它仍然提出了一个问题:是否有一种可靠的方法来定义在给定元素上评估各种指令的顺序?理想情况下,我想myDirective
明确地等待ngClass
完成它的爵士乐,然后再进行自己的操作。
谢谢!