Angular 之后添加模块 angular.bootstrap

我用 meteor + angular. 我的目的是在初次下载应用程序后添加更多依赖项 /这是因为包流程 bootstrapping 一开始,我对他没有很大控制/. 现在,这样做,我还想应用一个基本的代码结构,其中,例如,我会在一个模块中编译所有控制器。

这是主要的想法:


'use strict';

angular.module/'app.controllers', []/

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

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

.controller/'AnotherCtrl', function// {
// ...
}/;


然后将其作为依赖项将其打开:


angular.module/'app', [
'app.filters',
'app.services',
'app.directives',
'app.controllers' // Here
]/;


在一些研究之后,我发现我正在努力做什么 /在初始加载后添加依赖项/, 实际上对命令的查询请求的一部分 angular. 因此,我的选项使用例如函数
$controllerProvider


register//

:


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/ {
// ...
}/;
}/;


它有效,虽然不是那么优雅。 问题是:

什么更优雅的方式来说
config


register

?

有没有办法注册模块?
已邀请:

三叔

赞同来自:

创建模块:


angular.module/'app.controllers', []/;


将其添加为依赖性:


angular.module/'app'/.requires.push/'app.controllers'/;

卫东

赞同来自:

我看到的唯一方法 - 这是一个替代功能
angular.module

您自己的函数返回您用于引导应用程序的模块。


var myApp = angular.module/'myApp', []/; 
angular.module = function// {
return myApp;
}


因此,随后记录的所有模块实际上都记录在您的模块中。
myApp

.

该方法与您在问题中描述的方法组合 /使用此类供应商
$controllerProvider

/, 让你添加 "modules" 后
angular.bootstrap

.

示范

看到这一点 jsfiddle 用于示范:
https://jsfiddle.net/josketres/aw3L38r4/
/

缺点


config

添加后的模块
angular.bootstrap

, 将被称为。 也许有一种方法可以解决它,但我没有找到它。

覆盖
angular.module

如同 "dirty hack".

江南孤鹜

赞同来自:

依据
http://www.slideshare.net/nirk ... iques
/滑动 12/ 你可以指定
controllerProvider

应用程序。

替换模块方法的示例
controller


:
http://jsfiddle.net/arzo/HB7LU/6659/
/


var myApp = angular.module/'myApp', []/;

//note overriding controller method might be a little controversial :D
myApp.config/function allowRegisteringControllersInRuntime/$controllerProvider/ {
var backup = myApp.controller;
myApp.controller = $controllerProvider.register;
myApp.controller.legacy = backup;
}/

myApp.run/function /$rootScope, $compile/ {

myApp.controller/'MyCtrl', function/$scope/ {
$scope.name = 'Superhero';
}/

var elem;
var scope=$rootScope;
elem = $compile/'<p ng-controller="MyCtrl">{{name}}<input ng-model="name"/></p>'//$rootScope, function /clonedElement, scope/ {
console.log/'newly created element', clonedElement[0]/
document.body.appendChild/clonedElement[0]/;
}/;
console.log/'You can access original register via', myApp.controller.legacy/;
}/

要回复问题请先登录注册