动态添加控制器到角度app

时间:2016-02-09 11:56:02

标签: javascript angularjs

我正在将angular js用于骨干js应用程序。我有一个控制器(比如 controller1 ),它会从一个主干视图(例如 view1 )添加到角度应用程序中。现在我添加了另一个控制器(比如 controller2 ),这是另一个骨干视图(比如 view2 )。从view2我添加 controller2 到角应用程序。但是这里 controller2的构造函数没有被调用。

厂景

bootstarpAngular: function(){

        var app = angular.module('APP', []);
        app.controller('Controller1', ['$scope', loadController1]);

        angular.element(document).ready(function() {
                this.angular = angular.bootstrap(document, ['APP']);
        });
    }

控制器1

function loadController1($scope){
   console.log("Controller1");
}

视图2

addController2: function(){

            var app = angular.module('APP');
            app.controller('Controller2', ['$scope', loadController2]);
        }

控制器2

function loadController2($scope){
   console.log("Controller2");
}

此处,控制台日志仅打印 controller1 ,不打印 controller2

我希望两个控制器都能打电话。我做错了还是有更好的方法可以满足这个要求。

1 个答案:

答案 0 :(得分:0)

在引导Angular的应用程序之前,您只能添加具有controller功能的控制器。

如果你真的需要延迟加载一个控制器,你可以在bootstrap之前执行:

app.config(function($controllerProvider) {
  // globalCtrl must be a global function
  globalCtrl = $controllerProvider.register;
});

在您的新模块中:

globalCtrl('Controller2', Controller2Fn);

通常有更好的解决方案来实现这一目标,但我不知道您的具体情况。