我有一个模板(用于模态弹出窗口),根据其功能,应加载不同的控制器:
<div id="MsgBoxBack" ng-controller="{{notification.ctrl}}">
控制器:
app.controller('MainCtrl', ['$scope', function($scope){
$scope.notification = {
ctrl: 'logout',
//...
};
}]);
app.controller('logout', ['$scope', function($scope){
//...
}]);
当我尝试通过作用域变量设置控制器名称时,出现以下错误:
Error: [ng:areq] Argument 'notification.ctrl' is not a function, got string
那么,我应该如何基于作用域变量设置控制器?
我有一个相关的问题,关于使用作用域变量设置ng-click函数,这个例子here同样适用。
更新
Girafa给了我一个不同的解决问题的思路。 我选择使用一个通用控制器,并基于作用域变量使用switch语句:
<div id="MsgBoxBack" ng-controller="notification">
控制器:
app.controller('MainCtrl', ['$scope', function($scope){
$scope.notification = {
ctrl: 'logout',
//...
};
}]);
app.controller('notification', ['$scope', function($scope){
switch($scope.notification.ctrl) {
case 'logout':
console.log('logout');
//...
break;
}
}]);
这并没有解决原问题,但这似乎是一个简单的解决方法。如果有人知道更好的方法,请告诉我,我很乐意更新问题或接受更好的答案。