KnockoutJS 3.X API 第三章 計算監控屬性(5) 參考手冊


計算監控屬性構造參考

計算監控屬性可使用以下形式進行構造:

  1. ko.computed( evaluator [, targetObject, options] ) - 這種形式是創建一個計算監控屬性最常見的情況。
    • evaluator - 用於返回計算值的函數。
    • targetObject-如果給出定義的值this時KO調用回調函數。參見部分第三章 計算監控屬性(1) 使用計算監控屬性以獲取更多信息。
    • options - 計算監控屬性的其他屬性的對象。請參見下面的完整列表。
  2. ko.computed( options ) - 該單個參數形式用於創建一個計算觀察到接受下列任何性質的JavaScript對象。
    • read - 必寫。用來評估計算監控屬性的當前值的函數。
    • write- 可選的。如果給出,使得計算監控屬性到可寫。這是接收其他值並賦值給計算監控屬性的函數。這是給你提供自定義邏輯的地方。
    • owner- 可選的。如果給出定義的值this時KO調用您readwrite回調對象。
    • pure- 可選的。如果此選項true,計算觀察到的將被設置為一個Pure computed observables。此選項可替代為ko.pureComputed構造。
    • deferEvaluation- 可選的。如果這個選項true,那么計算監控屬性的值將不會被計算。
    • disposeWhen- 可選的。傳入方法。如果給出,該傳入方法將會在每一次運算結束之后被調用來釋放依賴屬性。真正的結果就是觸發依賴屬性的disposal方法。
    • disposeWhenNodeIsRemoved- 可選的。,傳入方法。如果給出,當指定的DOM元素被KO刪除的時候依賴屬性的disposal方法會被觸發。當元素的綁定被模版或者控制流程綁定方法移除的時候,此功能是用來釋放依賴屬性。
  3. ko.pureComputed( evaluator [, targetObject] )-構造一個Pure computed observables,使用this來調用evaluator或者optional,他不像ko.computed,這種構造方式不包含options參數。

  4. 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 observablesisInitial()始終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 ...
});

 

上述介紹的這些構造方法和函數通常只在高級場景非常有用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM