2017-07-25 22 views
0

我已經控制器定義爲這個angularJS控制器:可以在javascript

var servicesInstance = angular.module('myApp'); 
servicesInstance.controller('ServicesViewController', function() { 
    console.log("ServicesViewControllerconstructor."); 

    this.initialize = function() { 
     console.log("ServicesViewController initialize."); 
    }; 

});  

而且我想獲得它的一個實例動態地在這樣的代碼:

var instance = $injector.get('ServicesViewController'); 

注:請忽略硬編碼的字符串。對於這篇文章,我硬編碼的字符串。但是,實際上,控制器名稱將來自配置數據(例如:json對象)。

實例變量始終爲空。 $ injector.has('ServicesViewController')總是返回false。

爲什麼會這樣?這是獲得控制器實例的正確方法嗎?

謝謝 馬特

編輯: 扔在詳細信息我拒之門外,因爲我想保持這個問題很簡單。我正在使用requireJS來加載創建控制器的JavaScript代碼。 EG:

define([], function(ServicesViewControllerProvider) { 
    'use strict'; 

    var servicesInstance = angular.module('myApp'); 
    servicesInstance.controller('ServicesViewController', function() { 
     console.log("ServicesViewController Constructor"); 

     this.initialize = function() { 
      console.log("ServicesViewController initialize."); 
     }; 

    }); 

    var servicesViewController = new Object(); 
    servicesViewController.$inject=['$scope']; 
    servicesViewController.view = "/test/ServicesView.html"; 
    servicesViewController.requiresUI = true;  
    servicesViewController.controllerName = "ServicesViewController";  

    return servicesViewController;  
}); 

感謝 馬特

+1

其實這是一種方式不是控制器其服務 – henrybbosa

+0

看到代碼的變化。抱歉。我試圖讓控制器不是服務。但是,在調用$ injector.get時它應該重要嗎? – tatmanblue

+0

var instance = $ controller(''ServicesViewController「,{}); – henrybbosa

回答

1

這是我知道拿到控制器

var instance = $controller('ServicesViewController'); 

的實例解析的範圍通常是

//var instance = $controller('ServicesViewController',{$scope: $scope}); 
//call in service 
servicesInstance.service('myService',function ($controller, $rootScope) { 
    var scope = $rootScope.$new(true); 
    //here you have ServicesViewController scope 
    var instance = $controller('ServicesViewController',{scope: $scope}); 

}); 
+0

當我早些時候嘗試過,我收到$範圍的錯誤未捕獲TypeError:無法讀取未定義的屬性'$範圍'我試圖定義控制器有和沒有注入$ scope – tatmanblue

+0

哪裏你在另一個控制器或服務中調用它? – henrybbosa

+0

Henry,你能指點我一個如何使用$ modal來設置示波器的例子嗎?謝謝 – tatmanblue