我已經控制器定義爲這個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;
});
感謝 馬特
其實這是一種方式不是控制器其服務 – henrybbosa
看到代碼的變化。抱歉。我試圖讓控制器不是服務。但是,在調用$ injector.get時它應該重要嗎? – tatmanblue
var instance = $ controller(''ServicesViewController「,{}); – henrybbosa