KnockoutJS 3.X API 第三章 計算監控屬性(5) 參考手冊
計算監控屬性構造參考
計算監控屬性可使用以下形式進行構造:
ko.computed( evaluator [, targetObject, options] )- 這種形式是創建一個計算監控屬性最常見的情況。evaluator- 用于返回計算值的函數。targetObject-如果給出定義的值this時KO調用回調函數。參見部分第三章 計算監控屬性(1) 使用計算監控屬性以獲取更多信息。options- 計算監控屬性的其他屬性的對象。請參見下面的完整列表。ko.computed( options )- 該單個參數形式用于創建一個計算觀察到接受下列任何性質的JavaScript對象。read- 必寫。用來評估計算監控屬性的當前值的函數。write- 可選的。如果給出,使得計算監控屬性到可寫。這是接收其他值并賦值給計算監控屬性的函數。這是給你提供自定義邏輯的地方。owner- 可選的。如果給出定義的值this時KO調用您read或write回調對象。pure- 可選的。如果此選項true,計算觀察到的將被設置為一個Pure computed observables。此選項可替代為ko.pureComputed構造。deferEvaluation- 可選的。如果這個選項true,那么計算監控屬性的值將不會被計算。disposeWhen- 可選的。傳入方法。如果給出,該傳入方法將會在每一次運算結束之后被調用來釋放依賴屬性。真正的結果就是觸發依賴屬性的disposal方法。disposeWhenNodeIsRemoved- 可選的。,傳入方法。如果給出,當指定的DOM元素被KO刪除的時候依賴屬性的disposal方法會被觸發。當元素的綁定被模版或者控制流程綁定方法移除的時候,此功能是用來釋放依賴屬性。
-
ko.pureComputed( evaluator [, targetObject] )-構造一個Pure computed observables,使用this來調用evaluator或者optional,他不像ko.computed,這種構造方式不包含options參數。 -
ko.pureComputed( options )-構造一個Pure computed observables的另一種方式,她只包含options參數。具體參數內容可以參考上面的computed(options)。
計算監控屬性的函數:
一個計算監控屬性提供以下函數:
dispose()- 清除所有訂閱依賴關系。extend(extenders)-應用給定的擴展應用到計算監控屬性。getDependenciesCount()- 返回計算監控屬性的依賴性的當前數目。getSubscriptionsCount( [event] )-返回用戶的訂閱數量。或者,通過事件的名稱(如"change")返回剛剛訂閱的計數。isActive()- 返回依賴屬性在以后是否會被更新,一個依賴屬性如果沒有依賴關系是無效的。peek()- 返回當前依賴屬性的值而無需創建依賴關系(可以參考第三章 計算監控屬性(3) KO如何實現依賴追蹤中的peek)。subscribe( callback [,callbackTarget, event] )-注冊一個手動訂閱來通知依賴屬性的變化。
確定監控屬性的類型
ko.isObservable-當是observables、observableArrays或者 computed observables時返回true。ko.isWritableObservable-當是observables、observableArrays或者可寫的 computed observables時返回true。ko.isComputed-當是計算監控屬性時返回true。ko.isPureComputed-當是Pure computed observables時,返回ture.
使用計算監控屬性的context
一個計算監控屬性函數的執行過程中,您可以訪問ko.computedContext獲取有關當前計算監控屬性信息。它提供了以下功能:
-
isInitial()-當計算監控屬性首次運行時,返回true,其他時候返回false。對于Pure computed observables,isInitial()始終undefined。 -
getDependenciesCount()- 返回計算監控屬性的依賴性的當前數目。- 注:
ko.computedContext.getDependenciesCount()等同于調用計算監控屬性的getDependenciesCount()。
- 注:
例:
var myComputed = ko.computed(function() { // ... Omitted: read some data that might be observable ... // Now let's inspect ko.computedContext var isFirstEvaluation = ko.computedContext.isInitial(), dependencyCount = ko.computedContext.getDependenciesCount(), console.log("Evaluating " + (isFirstEvaluation ? "for the first time" : "again")); console.log("By now, this computed has " + dependencyCount + " dependencies"); // ... Omitted: return the result ... });
上述介紹的這些構造方法和函數通常只在高級場景非常有用。
作者:smallprogram
感謝您的閱讀。喜歡的、有用的就請大哥大嫂們高抬貴手"推薦一下"吧!你的精神支持是博主強大的寫作動力。歡迎轉載!另外,文章在表述和代碼方面如有不妥之處,歡迎批評指正。留下你的腳印,歡迎評論!

浙公網安備 33010602011771號