angular.bootstrap之后的Angular添加模块

use*_*211 20 angularjs meteor

我正在使用meteor + angular.我的目的是在app引导程序之后添加更多依赖项(这是因为程序包是在开始时处理引导的程序包而我没有太多控制它).现在,在执行此操作时,我还想强制执行基本代码结构,例如,我将在一个模块中编译所有控制器.

这是基本的想法:

'use strict';

angular.module('app.controllers', [])

    .controller('MainCtrl', function() {
        // ...
    })

    .controller('SubCtrl', function() {
        // ...
    })

    .controller('AnotherCtrl', function() {
        // ...
    });
Run Code Online (Sandbox Code Playgroud)

然后将其作为依赖项包含在主模块中:

angular.module('app', [
    'app.filters',
    'app.services',
    'app.directives',
    'app.controllers' // Here
]);
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我发现我正在尝试做的事情(在bootstrap之后添加依赖项)实际上是角度团队的功能请求的一部分.所以我的选择是使用,例如, $controllerProviderregister()功能:

Meteor.config(function($controllerProvider) {
    $controllerProvider.register('MainCtrl', function($scope) {
        // ...
    });
});

Meteor.config(function($controllerProvider) {
    $controllerProvider.register('SubCtrl', function($scope) {
        // ...
    });
});

Meteor.config(function($controllerProvider) {
    $controllerProvider.register('AnotherCtrl', function($scope) {
        // ...
    });
});
Run Code Online (Sandbox Code Playgroud)

它虽然不那么优雅,但却有效.问题是:

  • 做这个configregister部分的更优雅的方式是什么?
  • 有没有办法注册模块?

Die*_*ego 12

创建您的模块:

angular.module('app.controllers', []);
Run Code Online (Sandbox Code Playgroud)

将其添加为依赖项:

angular.module('app').requires.push('app.controllers');
Run Code Online (Sandbox Code Playgroud)

  • 根据我的理解,做angular.module('app').requires.push('app.controllers'); 只需将"app.controllers"添加到应用程序中的需求数组中.这不会调用或通知新要求的角度.在此之后您将使用什么代码来加载通知角度.我尝试了angular.module('app').run()和event $ rootScope.$ digest()但是没有用.谢谢. (13认同)
  • 只有在激活页面的ready事件并启动bootstrap之前执行代码时,这在bootstrap之后才会起作用. (3认同)