2014-09-16 16 views
5

Próbuję wykonać usługę modularną angularjs. Mam kontroler, który otwiera jakiś modal, w tym modalu i wywołuję funkcje oryginalnego kontrolera lub uzyskuję dostęp do niektórych zmiennych, tę część mogę już zrobić. Po prostu nie mogę zamknąć modala bez klikania przycisku Anuluj lub OK, o chcesz wykonać niektóre operacje w modalu, wywołać niektóre werbservices i zamknąć modalny ręcznie. Czy ktoś może mi pomóc?

zrobiłem plunker pracuje tutaj: plunker

var modalInstance = $modal.open({ 
       templateUrl: 'myModalContent2.html', 
       controller: ModalInstanceCtrl, 
       size: size, 
       scope: $scope 

      }); 
+3

Można użyć modalInstance zwrócony przez modal.open aby je zamknąć, tak więc należałoby zrobić: http: //plnkr.co/edit/SpEx6Y?p=preview – PSL

+0

Dzięki, to zadziałało. po prostu więcej pytań, czy istnieje sposób na sprawdzenie, czy jakiś mod jest otwarty przez id? bez modalInstance? – John

Odpowiedz

19

Aby zamknąć $ modal, które zostały otwarte można wykonać następujące kroki.

1) Podaj $modalInstance do kontrolera określonego podczas tworzenia modalu. W twoim przypadku nazwałeś to ModalInstanceCtrl.

2) Posiadają funkcję w telefonie ModalInstanceCtrl, która wywołuje .close() na $modalInstance.

swój ModalInstanceCtrl powinien wyglądać mniej więcej tak

angular.module('myCoolApp') 
    .controller('ModalInstanceCtrl', function ($scope, $modalInstance) { 

    $scope.closeModal = function(){ 
     $modalInstance.close(); 
    } 

}); 
2

$scope.myData='all data can be'; 
 
$scope.myModalInstance = $modal.open({ 
 
    templateUrl: 'app/myOpen.html', 
 
    controller: 'myOpenController', 
 
    size: 'lg', //modal open size large 
 
    backdrop: 'static', 
 
    keyboard: false, 
 
    resolve: { 
 
     myData: function() { 
 
      return $scope.myData; 
 
      } 
 
     } 
 
    }); 
 
$scope.modalClose = function(){ 
 
    $scope.myModalInstance.close(); 
 
}