如何在没有路线的情况下使用AngularAMD

时间:2016-01-22 01:42:39

标签: angular-amd

我有一个AngularAMD应用程序,并且我有一个指令(在RequireJS意义上)依赖于该应用程序(它是该指令“生活”的Angular模块)。

如果我使用路由,并在路由视图中使用该指令,那么有一个包含controllerUrl的路由,该路由取决于包含该指令的文件。

如果我不这样做,那么......

嗯,这是令人沮丧的循环。如果我告诉应用程序它依赖于指令,我会得到循环依赖。如果不这样做,Angular不会知道该指令,只会忽略该标记。

没有从AngularAMD再现整个控制器解析机制,我有没有办法做到这一点?

1 个答案:

答案 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的特殊情况。