成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

angularJS開發(fā)的注意事項(xiàng)匯總

Null / 3282人閱讀

摘要:作為一個應(yīng)該具有經(jīng)??偨Y(jié)反思的習(xí)慣如果不能及時總結(jié)可能就會忘記自己踩過的很多坑然后會導(dǎo)致同一個坑踩很多次所以我打算把這些都記錄下來以方便是對自己的重復(fù)記憶避免無效的另一方面可以希望可以給遇到相似問題的同僚們一些收獲手動觸發(fā)臟檢查在開發(fā)過程中

作為一個coder,應(yīng)該具有經(jīng)常總結(jié)反思的習(xí)慣,如果不能及時總結(jié),可能就會忘記自己踩過的很多坑,然后會導(dǎo)致同一個坑踩很多次,所以我打算把這些都記錄下來,以方便是對自己的重復(fù)記憶,避免無效的coding,另一方面可以希望可以給遇到相似問題的同僚們一些收獲.

1.手動觸發(fā)臟檢查

在開發(fā)過程中,我們可能經(jīng)常會通過js來手動更改綁定的相關(guān)數(shù)據(jù),而不是通過dom操作來改變綁定的相關(guān)數(shù)據(jù),這樣也很多情況下會導(dǎo)致綁定數(shù)據(jù)的視圖不能夠及時更新,這個時候就需要我們手動觸發(fā)一下臟檢查,下面我就介紹一下三種手動觸發(fā)臟檢查的方法.

(1) $apply() 方法
在需要手動觸發(fā)的地方調(diào)用 $scope.$apply(),使用該方法會觸發(fā)angular從rootScope的作用域下開始進(jìn)行綁定變量值的輪詢,相比較$digest()方法比較費(fèi)時.
但是這個有時這個方法會報錯.
(2) $digest() 方法
在需要手動觸發(fā)的地方調(diào)用 $scope.$digest(),使用該方法會觸發(fā)angular從scope的作用域下開始進(jìn)行綁定變量值的輪詢,相比較$aplly()更合理.
(3) $timeout()方法
將操作綁定數(shù)據(jù)的邏輯寫在$timeout()方法中.

找到一種更完美的解決動態(tài)添加數(shù)據(jù)導(dǎo)致頁面不能及時渲染的方法,迫不及待地來分享給大家~~~

可以定義一個全局的方法.這個方法就是經(jīng)過處理過的apply函數(shù),大家都叫它safeApply.上代碼了:

$rootScope.safeApply = function(fn) {
    var phase = this.$root.$$phase;
    if(phase == "$apply" || phase == "$digest") {
        if(fn && (typeof(fn) === "function")) {
            fn();
        } else {
            this.$apply(fn);
        }
    }
}

然后在需要動態(tài)添加吧的地方調(diào)用$rootScope.safeApply()即可,或者把需要動態(tài)添加的代碼作為寫進(jìn)$rootScope.safeApply方法的fn參數(shù)里.

2.ng-model-options 指令

這個指令在表單校驗(yàn)的時候非常有用,我們可以設(shè)置什么時候出發(fā)試圖更新,這樣你就可以設(shè)置dom元素失去焦點(diǎn)改變后調(diào)用監(jiān)聽,從而顯示校驗(yàn)的提示. ,