我正在嘗試創建一個擴展程序來限制可以推入可觀察數組的項目數。我遇到的問題是編寫應該發生的時候。我得到一個關於對象沒有方法'推'的錯誤。ObservableArray中的項目數量限制
這裏是演示我在說什麼的小提琴。當您單擊任何複選框時,將顯示錯誤。您必須在Chrome或Firefox中打開您的開發人員工具窗口以查看錯誤。
我正在嘗試創建一個擴展程序來限制可以推入可觀察數組的項目數。我遇到的問題是編寫應該發生的時候。我得到一個關於對象沒有方法'推'的錯誤。ObservableArray中的項目數量限制
這裏是演示我在說什麼的小提琴。當您單擊任何複選框時,將顯示錯誤。您必須在Chrome或Firefox中打開您的開發人員工具窗口以查看錯誤。
這裏有一個快速和骯髒的方式做到這一點。
ko.extenders.arrayMaxLength = function(target, length) {
target.push2 = target.push;
target.push = function (value) {
if (this().length < length) {
this.push2(value);
}
};
return target;
};
http://jsfiddle.net/madcapnmckay/2bTra/1/
,因爲它不會停止正在檢查的複選框,我以爲是要發生的事情這不是非常有用的,它只會阻止使得到陣列的價值。
更好的解決方案是編寫一個自定義的檢查綁定處理程序的限制值,將阻止他們進行檢查。
希望這會有所幫助。
我沒有收到任何錯誤? –
Knockout期待着一個observableArray,但是你用一個沒有push()方法的計算的observable取代它。您需要找到不同的解決方案。 – Niko