angularjs 的笔记
angular.copy()深拷貝
angular提供了一個可以復制對象的api——copy(source,destination),它會對source對象執(zhí)行深拷貝。
使用時需要注意下面幾點:
- 如果只有一個參數(shù)(沒有指定拷貝的對象),則返回一個拷貝對象
- 如果指定了destination,則會深拷貝對象復制給destination
- 如果source是null或者undefined,那么會直接返回source
- 如果source就是desitination,那么會報錯。
angular.equals()比較對象
AngularJS中的angular.equals()方法用于比較兩個對象、值或表達式是否相等。AngularJs文檔中對equals方法比較的原則是這樣描述的:
(1)比較的兩個對象或值能夠通過 === 表達式。===要求兩個值不僅值相同,類型也要相同,也就是說,1 === “1”是不成立 的。
(2)比較的兩個對象或值是相同類型的,而且它們所有的屬性通過angular.equals()方法判斷都是相等的。
(3)兩個值都為(NaN)。(在JavaScript中認為NaN == NaN是false)
(4)兩個值代表字面上相等的表達式,如兩個正則表達式:/abc/與/abc/是相等的。
angular $apply()
$apply方法傳播Model的變化。
那我們到底什么時候需要去調用apply()方法呢?情況非常少,實際上幾乎我們所有的代碼都包在scope.apply()里面,像ng?click,controller的初始化,http的回調函數(shù)等。在這些情況下,我們不需要自己調用,實際上我們也不能自己調用,否則在apply()方法里面再調用apply()方法會拋出錯誤。如果我們需要在一個新的執(zhí)行序列中運行代碼時才真正需要用到它,而且當且僅當這個新的執(zhí)行序列不是被angular JS的庫的方法創(chuàng)建的,這個時候我們需要將代碼用scope.apply()包起來。
?
我是這樣理解的該函數(shù)用于更新view的value,當需要變更view values時,需要調用該方法。典型地,這個函數(shù)由DOM的事件處理函數(shù)來調用。
比如,一個input directive在當它的input變更時就會調用$setViewValue,再比如:select控件在當一個option被選擇時也會調用這個函數(shù)更新view value。
- $render();
當視圖需要更新的時候會被調用。使用ng-model的指令應該自行實現(xiàn)這個方法。
- $isEmpty(value);
該方法用于判斷輸入值是否為空。?
例如,使用ngModelController的指令需要判斷其中是否有輸入值的時候會使用該方法。該方法可用來判斷值是否為undefined,'',null或者NaN。?
你可以根據(jù)自己的需要重載該方法。
- $setValidity(validationErrorKey, isValid);
該方法用于改變驗證狀態(tài),以及在控制變化的驗證標準時通知表格。?
這個方法應該由一個驗證器來調用。例如,一個解析器或者格式化函數(shù)。
- $setPristine();
該方法用于設置控制到原始狀態(tài)。?
該方法可以移除'ng-dirty'類并將控制恢復到原始狀態(tài)('ng-pristine'類)。
- $cancelUpdate();
該方法用于取消一次更新并重置輸入元素的值以防止$viewCalue發(fā)生更新,它會由一個pending debounced事件引發(fā)或者是因為input輸入框要等待一些未來的事件。
?
- $setViewValue();
該方法用于是為了在指令中改變ng-model綁定的值,適用于使用了獨立作用域的指令(在沒有雙向綁定屬性的情況下,無法通過scope進行賦值)。
.run()
run方法用于初始化全局的數(shù)據(jù),僅對全局作用域起作用。 只執(zhí)行一次,緩存起來.link:function(scope,elm.attrs ,ctrl){}
scope:輸出一個作用域,這個作用域是由Controller決定的,如果沒有定義,是空值。
elm:輸出一個元素數(shù)組,數(shù)組中的每個元素是調用directive的DOM樹
attrs:輸出一個Object, Object內是該DOM元素的各種屬性方法
ctrl:輸出一個Object,是對應的controller
轉載于:https://www.cnblogs.com/qianmojing/p/6129824.html
總結
以上是生活随笔為你收集整理的angularjs 的笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式-单例
- 下一篇: noip2016 小结(ac两题+学习总