Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将控制器动态添加到angular应用程序_Javascript_Angularjs - Fatal编程技术网

Javascript 将控制器动态添加到angular应用程序

Javascript 将控制器动态添加到angular应用程序,javascript,angularjs,Javascript,Angularjs,我在主干js应用程序中使用angular js。我有一个控制器(比如说controller1),它从一个主干视图(比如view1)添加到angular应用程序中。现在我添加了另一个控制器(比如controller2),它位于另一个主干视图(比如view2)。从view2中,我将控制器2添加到angular应用程序中。但是这里的控制器2的构造函数没有得到调用 视图1 bootstarpAngular: function(){ var app = angular.module('A

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

视图1

bootstarpAngular: function(){

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

        angular.element(document).ready(function() {
                this.angular = angular.bootstrap(document, ['APP']);
        });
    }
function loadController1($scope){
   console.log("Controller1");
}
控制器1

bootstarpAngular: function(){

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

        angular.element(document).ready(function() {
                this.angular = angular.bootstrap(document, ['APP']);
        });
    }
function loadController1($scope){
   console.log("Controller1");
}
视图2

addController2: function(){

            var app = angular.module('APP');
            app.controller('Controller2', ['$scope', loadController2]);
        }
function loadController2($scope){
   console.log("Controller2");
}
控制器2

addController2: function(){

            var app = angular.module('APP');
            app.controller('Controller2', ['$scope', loadController2]);
        }
function loadController2($scope){
   console.log("Controller2");
}
此处,控制台日志仅为控制器1打印,不为控制器2打印


我要两个控制器都接到电话。我做错了吗?或者有更好的方法可以满足这一要求。

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

如果确实需要延迟加载控制器,可以在引导前执行以下操作:

app.config(function($controllerProvider) {
  // globalCtrl must be a global function
  globalCtrl = $controllerProvider.register;
});
在新模块中:

globalCtrl('Controller2', Controller2Fn);

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

angular没有内置的惰性负载。在引导AngularAngular之前包括您的所有组件。backbone.js与此有什么关系。。?请不要添加不相关的标记Controller2需要一些数据,这些数据仅在view2中。View1没有必需的数据,因此我无法在View1中添加controller2。