3

KnockoutJS と Knockout-Validation を使用しています。プロパティを使用していますerrorElementClassが、検証エラーが修正されたときに要素に別のクラスを割り当てられるようにしたいと考えています。このクラスは、要素にエラーが発生して修正された後にのみ、要素に割り当てられます。

誰かがこの種のことを試みましたか?

4

1 に答える 1

4

オブザーバブルにエクステンダーを追加し、 isValid プロパティへの変更をサブスクライブできます

このような

ko.extenders.corrected = function(observable) {
    observable.isCorrected = ko.observable();
    observable.isValid.subscribe(function(value) {
        observable.isCorrected(value == true);
    });

    return observable;
};

http://jsfiddle.net/fkkJz/

CSSを手動でバインドする必要があります

<input data-bind="value: field, css: { corrected: field.isCorrected }"  />

css を手動でバインドする必要がないように、少しハックすることもできます。これは、値バインディングをオーバーライドし、CSS バインディング http://jsfiddle.net/HuLWD/を挿入する必要があるかどうかを確認します

更新:要件のためにこれを機能的に自分自身で必要とし、この回答を覚えていましたが、2番目の正しい値が送信された場合に修正された状態をクリアするためにも必要でした。

ko.extenders.corrected = function(observable) { 
    var state = observable();
    observable.isCorrected = ko.observable();
    observable.isValid.subscribe(function(value) {
        observable.isCorrected(value == true);
        state = observable();
    });

    observable.subscribe(function(value) {
        if(state !== value) {
            observable.isCorrected(false);
        }
    });

    return observable;
};

http://jsfiddle.net/HuLWD/1/

于 2012-12-07T13:58:57.727 に答える