2013-07-31 49 views
34

Tôi cần thực hiện cuộc gọi khi người dùng không sử dụng và vượt qua thời gian phiên sẽ đóng tất cả các phương thức Bootstrap. Các modals đang hoạt động phụ thuộc vào những gì người dùng đang làm vào thời điểm đó vì vậy tôi muốn làm một cái gì đó đó là tất cả bao gồm.Làm cách nào để đóng tất cả các kiểu khởi động đang hoạt động trong thời gian chờ của phiên?

tôi đã cố gắng:

$('.modal').modal('toggle'); 

Khi thời gian ra xảy ra nhưng modals của tôi vẫn còn ở đó.

Trả lời

77

Sử dụng đoạn mã sau:

$('.modal').modal('hide'); 

Ngoài ra nếu bạn muốn làm một cái gì đó nếu phương thức được ẩn sau đó bạn có thể làm điều này:

$('.modal').on('hidden', function() { 
    // write your code 
}); 
+2

..bởi vì việc sử dụng 'toggle' sẽ hiển thị các phương thức ẩn của bạn và ẩn các phương thức được hiển thị của bạn. – Robadob

+0

Nhưng như ông đã đề cập rằng nếu một số modals được mở và một số là gần thì nó có thể gây ra một số vấn đề. vì vậy tốt hơn nên sử dụng mã an toàn hơn. –

+0

Tôi đã nêu lý do cho câu trả lời của bạn, như tôi đồng ý và bạn đã không bao gồm lý do. – Robadob

-1

Hãy thử cách này: $('.modal.in:visible').modal('hide');

5

Câu trả lời đúng là thiếu cái gì đó quan trọng.

$('.modal').modal('hide') // closes all active pop ups. 
$('.modal-backdrop').remove() // removes the grey overlay. 

Dòng thứ hai là quan trọng nếu bạn muốn người dùng sử dụng trang như bình thường.

0

Đây là cách tôi nhận được nó làm việc trong dự án của tôi mà không cần sử dụng bất kỳ nhà máy hoặc mã bổ sung.

//hide any open bootstrap modals 
    angular.element('.inmodal').hide(); 

Tôi có một chức năng thời gian chờ mà phát ra logout như $rootScope.$emit('logout'); và người nghe trong dịch vụ của tôi là như sau:

$rootScope.$on('logout', function() {      
        //hide any open bootstrap modals 
        angular.element('.inmodal').hide(); 

        //do something else here 

       }); 

Nếu bạn muốn ẩn bất kỳ modals khác như thoại liệu góc ($mdDialog) & sử dụng hộp thoại cảnh báo ngọt ngào angular.element('.modal-dialog').hide(); & angular.element('.sweet-alert').hide();

Tôi không biết đây có phải là cách tiếp cận phù hợp không, nhưng nó có hiệu quả đối với tôi.