亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

angular.js - ng-if和ng-show在IE8下的問題
天蓬老師
天蓬老師 2017-05-15 16:50:55
0
2
714

最近在做一個angular js的專案。今早一個早上都在為一個bug發(fā)愁,、
是ng-if出現(xiàn)一個彈框,彈框的指令中引用了一個模板,模板中有script腳本,在其他瀏覽器都沒問題,就是在IE8下腳本不執(zhí)行。
檢視了很多IE8執(zhí)行腳本的問題,包括在script標籤加defer屬性,但不解決實際問題。
後來發(fā)現(xiàn)並不是腳本不能執(zhí)行,而是在主頁面載入時(ng-if為false彈框沒出現(xiàn))就執(zhí)行過了腳本。
網(wǎng)路上都說 ng-if會移除dom,生成dom,而ng-show只是改變其display屬性,
照理說不應該是ng-if="true"的時候才會載入dom,才會執(zhí)行腳本才對?
但把ng-if改成ng-show以後發(fā)現(xiàn)問題突然解決了,在IE8裡面完美的實現(xiàn)了點擊彈框後才執(zhí)行腳本,
這一點沒想明白是為什麼,有沒有高人可以解答?

天蓬老師
天蓬老師

歡迎選擇我的課程,讓我們一起見證您的進步~~

全部回覆(2)
PHPzhong

bug怎麼解決的我沒看明白,至於angular的解析過程我可以解釋下:

雖然在DOM查看器中我們看到的是angular解析之後的結果,但是實際上是瀏覽器先載入dom元素,然後angular再執(zhí)行,去查找各種指令,然後解析出結果的。

所以angular有幾個怪癖:ng-bind替換{{ expression }}可以解決花括號閃爍問題,你不能在定義href指令用在a標籤上,等等類似的問題原因都是如此。

ng不是後臺模板,對於後臺語言來說,模板就是各種字串解析拼接,但是ng是運行在瀏覽器中的,html會先變成dom元素,ng並不是在操縱字串,而是在操縱dom元素。

世界只因有你

你在ng-if里和ng-show裡應該都是綁定的controller的model吧?

看你的解決過程,我猜:
ng-if預設是true
ng-show預設是false

所以使用ng-if的時候,模板裡的script會在model還沒運算到的時候先執(zhí)行
不過這可能也是在ie8上的特殊情況

我有個建議,不要直接把script放在模板裡,例如放到模板的controller裡,這樣用ng-if也可以的

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板