我正在将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 。
我希望两个控制器都能打电话。我做错了还是有更好的方法可以满足这个要求。
答案 0 :(得分:0)
在引导Angular的应用程序之前,您只能添加具有controller
功能的控制器。
如果你真的需要延迟加载一个控制器,你可以在bootstrap之前执行:
app.config(function($controllerProvider) {
// globalCtrl must be a global function
globalCtrl = $controllerProvider.register;
});
在您的新模块中:
globalCtrl('Controller2', Controller2Fn);
通常有更好的解决方案来实现这一目标,但我不知道您的具体情况。