2013-12-11 26 views
16

Açısal-ui model penceresinin açık veya kapalı olup olmadığını güvenilir biçimde belirlemek için bir yöntem arıyorum.Açısal-ui modelinin açık veya kapalı olup olmadığını güvenilir bir şekilde belirleyin (gösterilen veya gizlenen)

Standart Bootstrap JS, bunun için 'gösterilen'/'gizli' olayları sağlar.

Şu anda yalnızca modal.close() işlevini kapatabilir ve bir değişkeni 'kapalı' olarak ayarlayabilirim. Ayrıca, modal nesneyi çıkardığımda tekrar açıldığında yeniden başlatıyorum. Ancak bu, kullanıcının arka planı tıkladığı durumları kapsamaz veya modemi kapatmak için ESC tuşuna basar.

Bu vakaları da temizlemek için temiz bir yol var mı?

+0

gerçek, fonksiyonel kullanım durum nedir? –

+0

Açısal uygulamanızda kullanılan güvenlik hizmetinin bir çatalı kullanıyorum: https://github.com/angular-app/angular-app/blob/master/client/src/common/security/security.js – chmanie

cevap

23

TLDR: !!$modalStack.getTop() kalıcı değil var olup olmadığını bilmek yeterli ne olursa olsun ve sonra kontrolör/hizmet/fabrika $modalStack enjekte uygulamanızda modülü ui.bootstrap.modal ekleyin.

Detaylı Çözüm: aynı sorunla karşı karşıya ve ben etrafında aşağıdaki çalışmaları ile geldi:

ui-önyükleme sistemle modeller kolları lib tanımlanır $modalStack adında bir fabrika vardır. Aynı hizmetin aynı zamanda dom içinde en çok modal olan getTop() adlı bir yöntemi vardır. (Ve tüm modellerin kapanması için dismissAll() yöntemi). Bu yüzden küçük işlevlere sahip küçük bir modül yazdım.

var utilsModule = angular.module('utilsModule', ['ui.bootstrap.modal']); 

utilsModule.factory('modalUtils', [ 
    '$modalStack', 
    function ($modalStack) { 
    return { 
     modalsExist: function() { 
     return !!$modalStack.getTop(); 
     }, 
     closeAllModals: function() { 
     $modalStack.dismissAll(); 
     } 
    }; 
    } 
]); 
+2

yazım hatası $ modalStack.dismisAll(); 'içinde. $ ModalStack.dismissAll(); ' – Dmitry

+0

olmalıdır. Bu çözüm harika çalışıyor. – jlyonsmith

+0

Kullanımı kolay ... –

İlgili konular