2015-10-05 2 views
5

Итак, это условие, в котором возникают проблемы, например, у меня есть родительский контроллер и дочерний контроллер, который является модальным контроллером, у меня есть метод в родительском контроллере, который Я хочу позвонить из дочернего модального контроллера, я не знаю, что им не хватает, но это то, что я пробовал.Вызвать метод родительского контроллера из дочернего модального контроллера (ui bootstrap)

App.controller('MailFolderController', ['$scope', '$http', '$timeout', '$stateParams', '$window', 'mails', '$interval', function ($scope, $http, $timeout, $stateParams, $window, mails, $interval) { 


$scope.check = function(){ 
    console.log("call parent ==========>") 
} 


    App.controller('orderCancellationController', ['$scope', '$modal', function ($scope, $modal) { 

    $scope.open = function (mail) { 
     var modalInstance = $modal.open({ 
      templateUrl: '/orderCancellationBox.html', 
      controller: ModalInstanceCtrl, 
      resolve: { 
       mail: function() { 
        return mail; 
       } 
      } 
     }); 
    }; 

    // Please note that $modalInstance represents a modal window (instance) dependency. 
    // It is not the same as the $modal service used above. 

    var ModalInstanceCtrl = function ($scope, $modalInstance, mail) { 

     $scope.mail = mail; 
     $scope.submit = function() { 
      $scope.$parent.check(); 
      $modalInstance.close('closed'); 
     }; 

     $scope.cancel = function() { 
      $modalInstance.dismiss('cancel'); 
     }; 
    }; 
    ModalInstanceCtrl.$inject = ["$scope", "$modalInstance", 'mail']; 

}]); 


}]); 

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

+0

пытаюсь добавить «объема: $ объема» под «контроллером: ModalInstanceCtrl» – klskl

+0

им жаль, не добирались вас, можете ли вы объяснить немного –

+0

обновили свой ответ ниже с примером – klskl

ответ

11

https://angular-ui.github.io/bootstrap/#/modal

Modal в загрузчике имеет опцию «область»,

объем - экземпляр области действия, которые будут использоваться для содержания модального (в самом деле $ службы модальной собирается создать дочернюю сферу предоставленного объема). По умолчанию $ rootScope

с использованием scope: $scope позволит вам использовать методы, определенные в родительском контроллере

пример:

$scope.open = function (mail) { 
    var modalInstance = $modal.open({ 
     templateUrl: '/orderCancellationBox.html', 
     controller: ModalInstanceCtrl, 
     scope: $scope, 
     resolve: { 
      mail: function() { 
       return mail; 
      } 
     } 
    }); 
}; 
+0

Спасибо много приятеля –

+0

Np, я подумайте, что вы также можете «разрешить» метод (как и с почтой), но я не пробовал сам – klskl

+0

на самом деле, почему функция вызова без '$ parent' работает, это наследование прототипа, верно? – Anatoly

1

Resolve $ сфера в $ модальный и просто вызвать $ scope.parent. проверьте, и все готово!

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

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