我想知道为多个模块重用相同指令的最佳方法是什么。在我看来,我认为指令就像DOM模块,所以这个角度的架构对我的观点有点烦人。
我现在的做法是:
var mainapp = angular.module('MainApp');
mainapp.controller( ... );
var otherapp = angular.module('OtherApp');
otherapp.controller( ... );
在其他文件中,我有我的指令,我想在这两个控制器/模块中使用
mainapp.directive('autoselect', function(){ ... });
但正如您所看到的,我必须指定我必须使用它的应用程序。如果我想在两者中使用,我是否必须复制两次相同的代码?
答案 0 :(得分:6)
您可以维护一个包含公共(服务,指令,值,常量等)的模块并注入每个模块。
angular.module('CommonApp',['OtherCommonModule1','OtherCommonModule2']).directive(..);
var mainapp = angular.module('MainApp', ['CommonApp']);
mainapp.controller( ... );
var otherapp = angular.module('OtherApp', ['CommonApp']);
otherapp.controller( ... );
答案 1 :(得分:4)
不,您不必指定使用指令所需的应用程序/模块。
让我解释一下:
所以,这就是我设计解决方案的方法:
angular.module('com.example.mydirective', [])
.directive('autoselect', function() { ... });
angular.module('MainApp', ['com.example.mydirective']);
.controller(...);
angular.module('OtherApp', ['com.example.mydirective']);
.controller(...);
我想补充一点:表示依赖的方括号具有特殊意义。
angular.module('module-name', []); // this line tells angularJS to create a new module
angular.module('module-name'); // no brackets -- this asks angularjs to return a pre-existing module
希望这有帮助