AngularJS用作用域变量设置ng控制器
AngularJS set ng-controller with scope variables
我有一个模板(用于模式弹出),根据其功能,应该加载不同的控制器:
<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
那么,我应该如何根据作用域变量设置控制器呢?
PLUNKER
我有一个相关的问题,关于用范围变量设置ng-click函数,这里有一个非常相同的例子。
更新
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;
}
}]);
更新的PLUNKER
这并不能解决最初的问题,但似乎是一个简单的解决方法。如果有人知道更好的方法,请告诉我,我很乐意更新问题或接受任何更好的答案。
尝试使用ngRoute。使用它,您可以为根元素指定不同的控制器和模板,并通过更改位置在它们之间切换。
相关文章:
- 为什么ng控制器不调用或工作或功能不工作
- Angular ng控制器与ng应用程序冲突
- 角度.js - 识别通过路由或 ng 控制器调用的控制器
- Angularjs数据ng控制器
- 在调用AJAX之后显示ng控制器的内容;作为“;作用
- 在AngularJS中动态切换ng include和ng控制器
- 使用模态ng控制器作为常规控制器
- 如何修复角度 js ng 控制器函数调用
- 在模板中以字符串形式动态插入ng控制器
- 如何在
标签中获取来自 ng 控制器的 'src' 的数据
- 计算 ng 控制器中的表达式
- 角度表单双重发布(html中没有另一个ng控制器)
- 在同一元素上使用“控制器作为 x”的多个 ng 控制器指令
- NG-控制器即使通过正确调用也无法工作
- 角度ng控制器与在指令中构建的控制器
- 重用 ng 控制器作为单例
- 不能做一个有角度的原因ng控制器的帖子
- 角度ng控制器不工作
- 如何从angular中的控制器js隐藏ng控制器之外的元素
- 请帮忙"数据ng控制器”;不起作用