У меня есть шаблон (для модального всплывающего меню) и в зависимости от его функции, различные контроллеры должны быть загружены:AngularJS набор нг-контроллер с областью переменных
<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.
UPDATE
Girafa дал мне идею подойти к этой проблеме иначе. Вместо изменения контроллеров, я решил использовать один общий контроллер с переключателем заявления на основе переменной Область применения:
<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
Чем я использую разные элементы с ngIf или директивами ngSwitch, применяемыми к ним. – Girafa
Или создать директиву с использованием объекта определения директивы. И в директивной функции определите контроллер, который вы хотите – Girafa