自解释提琴: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应该会自动为我解决范围和服务依赖关系。
如何从其名称中解析出控制器函数作为字符串及其相关性,以便将其分配给作用域变量?