2012-05-31 69 views
1

我正在嘗試創建一個擴展程序來限制可以推入可觀察數組的項目數。我遇到的問題是編寫應該發生的時候。我得到一個關於對象沒有方法'推'的錯誤。ObservableArray中的項目數量限制

這裏是演示我在說什麼的小提琴。當您單擊任何複選框時,將顯示錯誤。您必須在Chrome或Firefox中打開您的開發人員工具窗口以查看錯誤。

http://jsfiddle.net/pEzsb/55/

+0

我沒有收到任何錯誤? –

+0

Knockout期待着一個observableArray,但是你用一個沒有push()方法的計算的observable取代它。您需要找到不同的解決方案。 – Niko

回答

2

這裏有一個快速和骯髒的方式做到這一點。

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/

,因爲它不會停止正在檢查的複選框,我以爲是要發生的事情這不是非常有用的,它只會阻止使得到陣列的價值。

更好的解決方案是編寫一個自定義的檢查綁定處理程序的限制值,將阻止他們進行檢查。

希望這會有所幫助。

相關問題