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

Mal*_*lio 9 angular-amd

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

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

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

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

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

Bor*_*rov 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']);
Run Code Online (Sandbox Code Playgroud)

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

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

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

app.directive('myDirective', [
  ...
]);
Run Code Online (Sandbox Code Playgroud)

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