angularJS開發的注意事項彙總

2021-09-14 04:34:00 字數 1727 閱讀 2174

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

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

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

var phase = this.$root.$$phase;

if(fn && (typeof(fn) === 'function')) else

}}這個指令在表單校驗的時候非常有用,我們可以設定什麼時候出發試圖更新,這樣你就可以設定dom元素失去焦點改變後呼叫監聽,從而顯示校驗的提示. , , ,這些元素支援該指令

//使用示例
//可配置引數

規則指定事件發生後繫結資料

規定等待多少毫秒後繫結資料

規定是否需要驗證後繫結資料

規定是否作為 getters/setters 繫結到模型

規則是否使用時區

我們都知道,當頁面還未載入完畢的時候會出現}這種尷尬的情況,通過使用ng-bind-template指令,就可以避免尷尬情況的出現.

//使用示例

(1) 將html片段抽出,通過指令引入ng-include,ng-bind-html

(2) 通過ng-cloak指令

(1)路由傳參

//傳遞

$state.go(path, )

ui-sref="path()"

//獲取

$scope.$stateparams.name

(2)通過廣播

通過子元素傳遞給父元素,然後父元素再廣播給其他子元素,注意這個廣播是很快就完成的,所以很有可能出現子頁面還未載入完父元素的廣播就已經完成了,為了避免這種情況,需要父元素的廣播延遲執行.

(這種情況有乙個弊端,當進入子頁面後再次重新整理頁面,這次的廣播已經沒有了,就會導致這個子頁面的資料獲取失敗了.)

(3)定義全域性變數(window)

將多個控制器都需要通訊的變數定義為全域性的.這樣每個控制器都可以訪問到和改寫.

(4) 快取

sessionstorage, localstorage, cookie,瀏覽器的各種資料庫

以上方法個人比較推薦路由傳參的方式

(1)頁面離開時清除頁面的定時器

(2)頁面離開時清除頁面的***

(3)頁面離開時清除頁面的modal,popover之類的遮罩層.

var destroywatcher = $scope.$watch(...);

//示例**

//$watch方法會返回乙個函式,這個函式用來銷毀***,我們用乙個變數承接這個函式,然後再destory的時候呼叫這個函式就可以銷毀不必要的***了.

$scope.$on("$destroy", function()

$scope.popover.remove();

destroywatcher();

}

就先寫到這兒了,後面會持續更新...

AngularJS分層開發

為了angularjs的 利於維護和復用,利用mvc的模式將 分離,提高程式的靈活性及可維護性。1,前端基礎層 2,前端服務層 服務層 http 其它方法.3,父控制器 基本控制層 scope 分頁控制項配置 scope.paginationconf 4,前端控制層 繼承父控制器 實際是與basec...

Windows下開發Linux程式注意事項

今天嘗試在windows下編譯openocd sysprogs移植版 使用mingw32 記錄下過程中解決遇到的兩個問題 開始使用github desktop直接clone,沒有想到一些第三方庫繫結的是引用。在編譯開始後,儲存,檢視路徑發現完全是空目錄。後來google發現需要加上上述選項。這個很容...

windows使用cmake開發C 注意事項記錄

一,庫引用 在cmakelists.txt中配置opencv的頭檔案目錄和lib檔案即include directories和target link libraries即可完成引用。include directories和target link libraries可都使用絕對路徑,避免出錯。用ope...