Mon*_*y34 21 javascript angularjs
我们在Angular项目中围绕动态指令做了很多工作,有一件事是作为一个有用的东西,有一种通用指令可以列出许多不同类型的类似对象(例如,消息) ,用户,评论等),通过委托基于对象类型的特定指令.
我们称之为object-list指令,如果我们能够正常工作,它将有希望委托给许多不同的指令.
我们需要解决的主要问题是object-list我们的系统中是否存在提供该指令的指令.我们检查这个的方法是发出一个$compile针对target指令,将它链接到一个作用域,并检查它的HTML内容(例如var tmpElement = $compile('<div my-message'></div>')(scope);).当template选项引用目标指令的模板时,这似乎有效,但是当我们改为指向a时templateUrl,HTML内容为空.
这是一个Plunker,templateUrl方法到位(不工作).您可以将其注释掉并取消注释该template行以查看警报显示.
http://plnkr.co/edit/wD4ZspbGSo68v4eRViTp
有没有其他方法来检查指令的存在?我承认,这似乎有点像黑客.
Buu*_*yen 52
您可以$injector.has用来检查提供者或实例是否存在.
app.directive('objectList', function ($compile, $injector) {
return {
template: 'OK',
link: function (scope, element, attrs) {
var exist = $injector.has('myMessageDirective');
...
}
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12391 次 |
| 最近记录: |