2016-03-17 13 views
6

Tôi đang sử dụng compoenent phương thức từ Bootstrap UI (https://angular-ui.github.io/bootstrap/) trong Angular để render một phương thức, và khi đóng, tôi muốn có thể chuyển hướng đến trạng thái khác, hoặc ít nhất có một hàm được gọi.

Vấn đề là tôi có thể đánh chặn các sự kiện close nhưng bất cứ khi nào tôi dùng nhấn Esc các phương thức được sa thải và tôi không thể tìm thấy bất kỳ tài liệu bắt sự kiện dismiss hoặc gán một chức năng để lời hứa được trả về.

Mã này là như sau:

var modalInstance = $uibModal.open({ 
    templateUrl: 'a-template.html', 
    controller: 'AnotherCtrl', 
    controllerAs: 'modal', 
    backdrop: false, 
    size: 'lg' 
}); 

// I am able to catch this whenever the user exits the modal in an 
// orthodox fashion. Doesn't happen when he presses Esc button. 
modalInstance.closed = function() { 
    $state.go(homeState); 
}; 

Ngoài ra một giải pháp mà sẽ phù hợp với trường hợp doanh nghiệp của tôi sẽ chỉ đơn giản là không cho phép người dùng bỏ qua những phương thức. Và tự đóng nó lại bất cứ khi nào một sự kiện xảy ra trong bộ điều khiển phương thức. Tôi không tìm thấy chức năng này cho đến nay.

Trả lời

16

Trong bộ điều khiển được kết hợp với phương thức ("AnotherCtrl" hoặc "phương thức" cho bạn), bạn có thể sử dụng $scope.$on() với sự kiện 'modal.closing'.

Ví dụ:

var modalInstance = $uibModal.open({ 
    templateUrl: 'a-template.html', 
    controller: ['$scope', function($scope){ 
    $scope.$on('modal.closing', function(event, reason, closed){ 
     if('condition for not closing') 
      event.preventDefault(); //You can use this to prevent the modal from closing    
     else 
      window.location = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";    
    }); 
    }], 
    controllerAs: 'modal', 
    backdrop: false, 
    size: 'lg' 
}); 
+0

công trình, cảm ơn bạn – Vee6

+0

Cảm ơn, mà đã làm các trick. –

+3

Video đặc biệt tốt cho điều kiện 'else'. Rất khuyên bạn nên – NDavis

Các vấn đề liên quan