2016-02-09 120 views
0

我正在使用角度js進入骨幹js應用程序。我有一個控制器(比如說controller1),它從一個骨幹視圖(例如view1)被添加到角度應用程序中。現在我添加了另一個控制器(說控制器2),這是另一個骨幹視圖(說視圖2)。從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"); 
} 

這裏,控制檯日誌打印只爲控制器1不是控制器2

我希望兩個控制器都能接到呼叫。我做錯了什麼或更好的方法可以做到這一點。

+0

角度沒有內置惰性負載。在bootstrapping之前包含所有組件角色 – charlietfl

+0

backbone.js與此有什麼關係..?請不要添加不相關的標籤 –

回答

0

在引導Angular的應用程序之前,您只能使用controller函數添加控制器。

如果你真的需要延遲加載控制器,你可以做,引導前:

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

在新的模塊:

globalCtrl('Controller2', Controller2Fn); 

通常有一個更好的解決方案來實現這一目標,但我不知道你的確切情況。

+0

Controller2需要一些數據,這些數據僅在view2中。 View1沒有所需的數據,由於這個我不能在view1中添加controller2。 –

+0

請使用更多代碼編輯您的問題 –