1. 程式人生 > >angularjs 與 bootstrap 模態框問題

angularjs 與 bootstrap 模態框問題

李宜衡發現了一個問題,在用angularjs寫的時候發現bootstrap的模態框在單頁面跳轉時不會自動關閉.就是這樣:在點選模態框時會彈出:

clipboard.png

但當你填寫完資訊點選儲存時,切換檢視後模態框並不會關閉

clipboard.png

此時頁面還是陰影狀態且無法儲存.

一開始雖然不知道為什麼會這樣,但既然他沒有關閉,我就自己手動關閉看能不能解決.去bootstrap的官網上看,有沒有什麼手動關閉彈出框的方法.找到了這個

clipboard.png

clipboard.png

bootstrap上面果然有關閉模態框的方法,但他是對dom的操作,於是我想寫一個模態框指令,在點選儲存時能夠關閉模態框.

新建一個modal的指令,指令的模板從bootstrap上邊拿的

clipboard.png

一開始想的是當點選儲存時,先把模態框關再就執行控制器傳過來的方法,結果居然沒有什麼變化.

猜測可能是模態框沒有成功關閉,可能時用法錯誤,但把控制器的方法註釋掉之後,模態框確實成功關閉了.

有點奇怪,最後去控制檯打了個斷點,問題就找到了:

clipboard.png

當點選儲存時,由於我打了個斷點,程式停止了,點選下一步直到程式執行到結尾

clipboard.png

此時頁面還是黑色的,就說明此時的模態框並沒有關閉,再點選執行

clipboard.png

一直點選到這步,模態框才關閉了,這說明了其實模態框關閉操作並不是立即執行的,他其實是一個非同步操作.在模態框關閉操作還沒完成時,頁面就進行跳轉了,導致模態框不能關閉,因為這是單頁面,就導致了頁面還是黑色的.

再回到bootstrap,仔細查詢,發現確實有關閉成功後觸發的事件

clipboard.png

把控制器傳過來的方法在關閉事件觸發後再呼叫

clipboard.png

最後解決了跳轉後模態框不能關閉的問題.