Javascript 什么';修复两个同名AngularJS指令的最佳方法是什么?
我有一个越来越大的项目。我的问题是第三方指令冲突,因为。。。不明智地。。。选择的指令名称,即“日期选择器” 因为我使用bower进行依赖关系管理,所以我不想编辑任何库,因为这会破坏可移植性Javascript 什么';修复两个同名AngularJS指令的最佳方法是什么?,javascript,angularjs,bower,Javascript,Angularjs,Bower,我有一个越来越大的项目。我的问题是第三方指令冲突,因为。。。不明智地。。。选择的指令名称,即“日期选择器” 因为我使用bower进行依赖关系管理,所以我不想编辑任何库,因为这会破坏可移植性 有人是如何解决这个问题的?在我的评论之后,我创建了一个plunker,以查看此解决方案是否可行,以及在名称冲突的情况下Angle在不同模块下的行为: 似乎如果您对不同的指令使用不同的限制,那么它确实有效(您需要在不同的指令上使用互不相同的限制) 将它们放在不同的模块中如何?感谢dustmouse,我澄清了我
有人是如何解决这个问题的?在我的评论之后,我创建了一个plunker,以查看此解决方案是否可行,以及在名称冲突的情况下Angle在不同模块下的行为: 似乎如果您对不同的指令使用不同的限制,那么它确实有效(您需要在不同的指令上使用互不相同的限制)
将它们放在不同的模块中如何?感谢dustmouse,我澄清了我指的是第三方指令。解决方法可能是,一个作为属性('a'),另一个作为元素('E')以不同的方式进行限制。这有助于区分?“我不确定是否有解决办法。”ItamarL。我觉得Angular会使用上一次定义的任何模块,如果您试图使用它,而不是它的
restrict
属性,那么就会抛出一个错误。除了对您使用的模块进行高度选择之外,您不能做太多,这太棒了!如果指令的restrict
属性冲突,您可能可以使用装饰器更改它们,但是您可能只能更改最后注册的属性,因为指令具有不同的访问限制级别。因为我指的是第三方库,幸运的是它们有不同的访问限制。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl as vm">
<div some-directive></div>
<some-directive></some-directive>
<script>
var myApp2 = angular.module('myApp2',[]);
myApp2.directive("someDirective", function() {
return {
restrict: 'E',
template: 'inside myApp2'
};
});
var myApp = angular.module('myApp', ['myApp2']);
myApp.directive("someDirective", function() {
return {
restrict: 'A',
template: 'inside myApp'
};
});
</script>
</body>
</html>
inside myApp
inside myApp2