監視可能な配列にプッシュできるアイテムの数を制限するエクステンダーを作成しようとしています。私が遭遇している問題は、書き込みが発生することになっているときです。オブジェクトにメソッド'push'がないというエラーが発生します。
これが私が話していることを示すためのフィドルです。チェックボックスのいずれかをクリックすると、エラーが表示されます。エラーを確認するには、ChromeまたはFirefoxで開発ツールウィンドウを開く必要があります。
監視可能な配列にプッシュできるアイテムの数を制限するエクステンダーを作成しようとしています。私が遭遇している問題は、書き込みが発生することになっているときです。オブジェクトにメソッド'push'がないというエラーが発生します。
これが私が話していることを示すためのフィドルです。チェックボックスのいずれかをクリックすると、エラーが表示されます。エラーを確認するには、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/
チェックボックスがオンになっているのを止めないので、あまり役に立ちません。これは、あなたが望んでいることだと思います。配列に到達する値を止めるだけです。
より良い解決策は、チェックされないようにする制限値を使用して、カスタムのチェックされたバインディングハンドラーを作成することです。
お役に立てれば。