我有一个AngularAMD应用程序,并且我有一个指令(在RequireJS意义上)依赖于该应用程序(它是该指令“生活”的Angular模块)。
如果我使用路由,并在路由视图中使用该指令,那么有一个包含controllerUrl的路由,该路由取决于包含该指令的文件。
如果我不这样做,那么......
嗯,这是令人沮丧的循环。如果我告诉应用程序它依赖于指令,我会得到循环依赖。如果不这样做,Angular不会知道该指令,只会忽略该标记。
没有从AngularAMD再现整个控制器解析机制,我有没有办法做到这一点?
答案 0 :(得分:3)
我认为可能有两种情况:
1)您的指令是独立的,并不实际依赖于应用程序中的任何内容。
在这种情况下,您可以将它放入自己的模块中(包括RequireJS和angular):
Thread.sleep(10)
AngularAMD支持此用例,请参阅3rd Party AngularJS Modules。
2)您的指令取决于您应用内的内容。在这种情况下 - 将它放入同一个模块中(同样在角度和RequireJS方面)。
// my-directive.js
var module = angular.module('my-directive', []);
module.directive('myDirective', [
...
]);
// app.js (depends on my-directive.js)
var app = angular.module('myapp', ['my-directive']);
3)[更新]另一个解决方案:AngularAMD还支持定义和加载an application wide module的特殊情况。