天天看點

KnockoutJS 3.X API 第七章 其他技術(6) 使用“fn”添加自定義函數

有時,您可能會通過向Knockout的核心值類型添加新功能來尋找機會來簡化您的代碼。 您可以在以下任何類型中定義自定義函數:

KnockoutJS 3.X API 第七章 其他技術(6) 使用“fn”添加自定義函數

因為繼承,如果你附加一個函數到ko.subscribable,它将可用于所有其他的。 如果你附加一個函數到ko.observable,它将被ko.observableArray繼承而不是ko.computed繼承。

要附加自定義函數,請将其添加到以下可擴充性點之一:

<code>ko.subscribable.fn</code>

<code>ko.observable.fn</code>

<code>ko.observableArray.fn</code>

<code>ko.computed.fn</code>

然後,您的自定義函數将可用于從該點開始建立的所有類型的值。

注意:最好僅将此可擴充點用于真正适用于各種場景的自定義函數。 如果你隻打算使用一次,你不需要添加自定義函數到這些命名空間。

這裡有一種方法來定義一個過濾器按屬性函數,将在所有後續建立的ko.observableArray執行個體上可用:

這傳回一個新的計算值,它提供了數組的過濾視圖,同時保持原始數組不變。 因為過濾的數組是一個計算的observable,是以當底層數組發生變化時,它将被重新計算。

以下執行個體示範如何使用此:

UI源碼:

視圖模型源碼:

如果你傾向于過濾可觀察的數組很多,添加一個filterByProperty全局可見的數組可能會使你的代碼更整潔。 但是如果你隻需要偶爾過濾,你可以選擇不附加到ko.observableArray.fn,而隻是手工構造doneTasks如下:

作者:smallprogram

出處:

http://www.cnblogs.com/smallprogram

感謝您的閱讀。喜歡的、有用的就請大哥大嫂們高擡貴手"推薦一下"吧!你的精神支援是部落客強大的寫作動力。歡迎轉載!另外,文章在表述和代碼方面如有不妥之處,歡迎批評指正。留下你的腳印,歡迎評論!