1

監視可能な配列にプッシュできるアイテムの数を制限するエクステンダーを作成しようとしています。私が遭遇している問題は、書き込みが発生することになっているときです。オブジェクトにメソッド'push'がないというエラーが発生します。

これが私が話していることを示すためのフィドルです。チェックボックスのいずれかをクリックすると、エラーが表示されます。エラーを確認するには、ChromeまたはFirefoxで開発ツールウィンドウを開く必要があります。

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

4

2 に答える 2

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/

チェックボックスがオンになっているのを止めないので、あまり役に立ちません。これは、あなたが望んでいることだと思います。配列に到達する値を止めるだけです。

より良い解決策は、チェックされないようにする制限値を使用して、カスタムのチェックされたバインディングハンドラーを作成することです。

お役に立てれば。

于 2012-05-31T16:00:28.227 に答える
1

これが私がやったことです:

http://jsfiddle.net/zero21xxx/B3RgK/

基本的には、チェックボックスを有効にするかどうかを制御するだけです。

于 2012-05-31T17:40:07.143 に答える