2
我有一個模板(用於模式彈出),並且根據其功能,不同的控制器應加載:AngularJS設置NG-控制器範圍內的變量
<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
S o我應該如何根據範圍變量設置控制器?
我對與範圍內的變量與此同樣的例子here設置NG-點擊功能相關的問題。
UPDATE
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;
}
}]);
這不是解決原的問題,但似乎是一個簡單的解決方法。如果有人知道更好的方法,只需告訴我,我很樂意更新問題或接受更好的答案。
我不想更改位置,這應該是一個簡單的可重複使用的模式窗口模板,它顯示在網站上的不同頁面中,並且需要不同的控制器,具體取決於它在特定頁面上的功能。 。 – orszaczky 2014-10-16 17:25:22
比我應用ngIf或ngSwitch指令應用於它們的不同元素。 – Girafa 2014-10-16 17:31:52
或者使用指令定義對象創建指令。並在指令函數中定義你想要的控制器 – Girafa 2014-10-16 17:33:07