Может ли контроллер модального окна работать в родительском контроллере?

0

Предположим, вы запускаете модальное окно, используя $ modal.open из угловой директивы.

Имеет ли модальное окно доступ к функциям, определенным в родительской директиве?

Код контроллера директивы

..
function parentFunction()
{
     return 5;
}

$scope.showDialog = function()
{
     var dialog = $modal.open({
     controller: 'modalController',
     ...
}

Код 'modalController'

var val = parentFunction();

Теги:
angular-bootstrap

1 ответ

2
Лучший ответ

Он не будет иметь доступ к лексическому доступу, но есть два способа (которые я знаю) "передать данные" контроллеру, в зависимости от того, что имеет для вас больше смысла:

1) через $scope :

$scope.parentFn = function parentFn(){
};

var dialog = $modal.open({
     controller: 'modalController',
     scope: $scope,
     //...
});

2) по resolve :

function parentFn(){
}

var dialog = $modal.open({
     controller: 'modalController',
     resolve: {
       parentFn: function(){
         return parentFn;
       }
     },
     // ...
});

то вы можете получить parentFn как локальную modalController в modalController:

.controller("modalController", function(parentFn){
   parentFn();
});

Или...

если вы определили свой встроенный контроллер, тогда у него будет доступ к лексической области доступа:

function parentFn(){
}

var dialog = $modal.open({
     controller: function modalController(){
        parentFn();
     },
     // ...
});
  • 0
    Через разрешение, когда вы вводите parentFn, когда я пытаюсь вызвать эту функцию внутри другой функции в модальном контроле.
  • 0
    @ user3722785, мне непонятно что ты спрашиваешь / говоришь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню