自解釋提琴:http://jsfiddle.net/5FG2n/1/如何從外部範圍解析和分配內部控制器?
說我有兩個控制器,一個包含其他的視圖。外部控制器是靜態的,但我需要根據外部的範圍變量設置內部控制器。作用域變量將作爲字符串的內部控制器名稱(例如。'InnerCtrl'
)。
這裏的觀點:
<div ng-app='app' ng-controller='OuterCtrl'>
<div ng-controller='dynamicCtrl'>
{{result}}
</div>
</div>
及這裏的還沒有正確的模塊:
angular.module('app', [])
.controller('OuterCtrl', ['$scope',
function($scope) {
// Instead of hard coding the controller here,
// how do I resolve the string 'InnerCtrl' to the
// controller function defined below, so it can be
// assigned to this dynamicCtrl property?
$scope.dynamicCtrl = function($scope) {
$scope.result = 'not working yet';
};
//eg:
//$scope.dynamicCtrl = resolveCtrl('InnerCtrl');
}
])
.controller('InnerCtrl', ['$scope', 'service',
function($scope, service) {
$scope.result = service.getMessage();
}
])
.factory('service', function() {
return {
getMessage: function() { return 'working!'; }
};
});
我使用$噴油器服務嘗試:
$scope.dynamicCtrl = $injector.get('InnerCtrl');
但是這給:「未知提供者:InnerCtrlProvider < - InnerCtrl」
我也想過用$控制器服務:
$scope.dynamicCtrl = $controller('InnerCtrl', {} /* don't want to hard code dependencies */);
但是這給了我 「未知提供商:$ scopeProvider < - $範圍」。我知道我可以創建一個範圍來傳入,但我覺得angular應該會自動爲我解決範圍和服務依賴關係。
如何從其名稱中解析出控制器函數作爲字符串及其相關性,以便將其分配給作用域變量?