2017-01-20 2 views
0

Я новичок в Angular (мне нужно отредактировать проект после моего бывшего коллеги).Close Angular modal от другого контроллера

Я определил FormController и ModalController. ModalController определяется следующим образом:

angular.module('app', [...]).controller('ModalController', ['part', class { 
    constructor(part) { 
     this.part = part; 
    } 
}]); 

И в FormController я следующий код, чтобы открыть модальное:

openModal(template, part) { 
    this.$uibModal.open({ 
     animation: true, 
     templateUrl: template + '.html', 
     controller: 'ModalController', 
     controllerAs: 'ModalCtrl', 
     resolve: { 
      part:() => { 
       return something; 
      } 
     } 
    }); 
} 

Моя проблема закрыть модальный (после щелчка на кнопке в виду).

+0

Вы можете сделать это с помощью jquery: $ ("# modalName"). Modal ('hide'); – Jenny

+0

@ Jenny most Angularjs разработчики пытаются избежать использования jQuery при ответе на вопросы Angularjs. – Claies

ответ

1

Вам нужно будет ввести зависимость $uibModalInstance в контроллер Modal.

Затем вы можете использовать либо $dismiss или $close, как показано в этом примере, взятом из UI Bootstrap Docs:

$ctrl.ok = function() { 
    $uibModalInstance.close($ctrl.selected.item); 
    }; 

    $ctrl.cancel = function() { 
    $uibModalInstance.dismiss('cancel'); 
    }; 

Так как вы инстанцируется контроллер, как part вы будете использовать это и предполагая, что вы не должны пройти результат или причина вы можете удалить эти параметры из методов тоже:

part.ok = function() { 
    $uibModalInstance.close(); 
    }; 

    part.cancel = function() { 
    $uibModalInstance.dismiss(); 
    }; 

также примечание, если вы видите что-то префикс $uib используется, что означает, что ар искусство компонента Angular UI Bootstrap, мы надеемся, что знания должны помочь в поиске дополнительной информации, необходимой в будущем.

+0

И как передать модальный экземпляр в ModalController? – kmaci

+1

Вы можете передать это вам в декларации контроллера таким образом 'angular.module ('app', [...]). Controller ('ModalController', ['part', '$ uibModalInstance', class { constructor (part, $ uibModalInstance) ' – Callum

0

Вы должны ввести экземпляр uib-модала в контроллер модального типа, который содержит метод close. который вы можете использовать для закрытия модального.

openModal(template, part) { 
    var modalInstance = $uibModal.open({ 
     animation: true, 
     templateUrl: template + '.html', 
     controller: 'ModalController', 
     controllerAs: 'ModalCtrl', 
     resolve: { 
      part:() => { 
       return something; 
      } 
     } 
    }); 
} 

Вводит modalInstance в модальный контроллер, а затем вы можете использовать

modalInstance .close() 

метод, чтобы закрыть модальные.

2

Вы можете передать модальный экземпляр в контроллер таким образом:

angular.module('app', [...]).controller('ModalController', ['part', '$uibModalInstance', class { 
    constructor(part, $uibModalInstance) { 
     this.part = part; 
    } 
}]); 

И как Каллум поставил его, используйте отклонять() и близкие() функции $ uibModalInstance закрыть модальное экземпляр