文章出處

計算監控屬性構造參考

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

  1. ko.computed( evaluator [, targetObject, options] ) - 這種形式是創建一個計算監控屬性最常見的情況。
  • evaluator - 用于返回計算值的函數。
  • targetObject-如果給出定義的值this時KO調用回調函數。參見部分第三章 計算監控屬性(1) 使用計算監控屬性以獲取更多信息。
  • options - 計算監控屬性的其他屬性的對象。請參見下面的完整列表。
  • 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方法會被觸發。當元素的綁定被模版或者控制流程綁定方法移除的時候,此功能是用來釋放依賴屬性。
  • 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 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 ...
    });

     

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


    文章列表




    Avast logo

    Avast 防毒軟體已檢查此封電子郵件的病毒。
    www.avast.com


    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()