2014-10-16 4 views
2

У меня есть шаблон (для модального всплывающего меню) и в зависимости от его функции, различные контроллеры должны быть загружены: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 как установить контроллер на основе переменной области?

PLUNKER

У меня есть связанный с этим вопрос о настройке функций нг клики с размаху переменных с этим тем же примером 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; 
    } 

}]); 

UPDATED PLUNKER

Это не решает оригинал вопрос, но представляется простым обходным путем. Если кто-нибудь знает, как лучше это сделать, просто дайте мне знать, я буду рад обновить вопрос или принять любые лучшие ответы.

ответ

0

Попробуйте использовать ngRoute. С его помощью вы можете назначить разные контроллеры и шаблоны вашему корневому элементу и переключиться между ними, изменив свое местоположение.

+0

Я не хочу менять местоположение, это должен быть простой многоразовый шаблон модального окна, который отображается на разных страницах на веб-сайте и нуждается в другом контроллере в зависимости от того, какую функциональность он имеет на этой конкретной странице. . – orszaczky

+0

Чем я использую разные элементы с ngIf или директивами ngSwitch, применяемыми к ним. – Girafa

+0

Или создать директиву с использованием объекта определения директивы. И в директивной функции определите контроллер, который вы хотите – Girafa

Смежные вопросы