国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

angularJS開發的注意事項匯總

Null / 3275人閱讀

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

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

1.手動觸發臟檢查

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

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

找到一種更完美的解決動態添加數據導致頁面不能及時渲染的方法,迫不及待地來分享給大家~~~

可以定義一個全局的方法.這個方法就是經過處理過的apply函數,大家都叫它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);
        }
    }
}

然后在需要動態添加吧的地方調用$rootScope.safeApply()即可,或者把需要動態添加的代碼作為寫進$rootScope.safeApply方法的fn參數里.

2.ng-model-options 指令

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