9

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

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

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

嗯,它是令人愤怒的圆形。如果我告诉应用程序它依赖于指令,我会得到一个循环依赖。如果我不知道,Angular 不知道该指令,并且标记将被忽略。

没有从 AngularAMD 复制整个控制器解析机制,有没有办法我应该这样做?

4

1 回答 1

3

我认为可能有两种情况:

1)您的指令是独立的,实际上并不依赖于应用程序中的任何内容。

在这种情况下,您可以将其放入自己的模块中(无论是 RequireJS 还是 angular):

// 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']);

AngularAMD 支持此用例,请参阅第 3 方 AngularJS 模块

2)您的指令取决于您的应用程序内部的某些内容。在这种情况下 - 将其放入同一个模块中(在角度和 RequireJS 方面也是如此)。

// app.js
var app = angular.module('myapp', []);

app.directive('myDirective', [
  ...
]);

3) [更新] 另一个解决方案:AngularAMD 还支持一种特殊情况来定义和加载应用程序范围的模块

于 2016-01-29T09:30:56.800 回答