如何在使用 requirejs 实例化后将指令加载到模块中

How to load a directive into a module after instantiating using requirejs

为了描述我的障碍,一个小故事。我正在注入所有 requirejs 路径文件(基本上是指令),其中包含任何指令到我在 app.js 中的主模块,它工作得很好。有点像

define(['angularAMD', 'angular-route', 'angular-resource', 'angularTranslate', 'angularTranslateLoaderStaticFiles', 'bootstrap', 'angular-idle', 'loadingMaskDirective', 'multiselectDirective', 'treeview.directive', 'tabs', 'checklist.directive'], function(angularAMD) { 
var app = angular.module("myApp", ["ngRoute", "ngResource", "ngTable", "myApp.directives", 'ui.bootstrap', 'flow']);
app.config(....){
/**some route provider**/
}...
angularAMD.bootstrap(app);
return app;

我已经定义了所有指令并将它们注入到主模块中。但是我想在他们的独立控制器中定义一些指令来减少初始负载。必须有一些方法。对了!!

我的指令 js 文件中的代码看起来像..

define(['angular'], function() {
angular.module('myApp').directive('SomeDirective',
        ['$parse', '$compile', '$rootScope', '$filter', function($parse, $compile, $rootScope, $filter) {
.........

因此,当我尝试在页面控制器而不是 app.js 中定义相同内容时,它不起作用。但是令我惊讶的是,在这种情况下 工厂函数有效但指令无效

如有任何帮助,我们将不胜感激。谢谢

您是否尝试过使用应用程序创建指令?

define(['app'], function(app) {
app.directive('SomeDirective',
        ['$parse', '$compile', '$rootScope', '$filter', function($parse, $compile, $rootScope, $filter) {
.........

angularAMD 提供的替代方案是:

define(['angularAMD'], function(angularAMD) {
angularAMD.directive('SomeDirective',
        ['$parse', '$compile', '$rootScope', '$filter', function($parse, $compile, $rootScope, $filter) {
.........

第二种方法的好处是允许在加载 app.js 之前加载指令。有关详细信息,请参阅 Loading Application Wide Module