2

私は次のコードを持っていますが、アイテムを挿入した後にプロパティをクリアする場合を除いて、正常に動作します。エラーはすぐに表示されます。

ko.validation.configure({
        insertMessages: false,
        decorateElement: true,
        errorElementClass: 'error'
    });

FirstName: ko.observable().extend({
            required: true
        }),

ノックアウトビューモデルにメソッドを追加しました

addItem: function () {
            if (!viewModel.isValid()) {
                viewModel.errors.showAllMessages();
                return false;
            } else {
                //DO SOMETHING
                this.SomeCollection.push(newInterviewee);
                this.FirstName(null);
                }
        },

HTMLには次のものがあります。

<div>
<label>First Name</label>
<input data-bind="value: FirstName, validationElement: FirstName, valueUpdate: 'keyup'" class="input" type="text">
</div>
<div>
<div>
<input data-bind="click: addItem" class="button" type="button">
</div>

問題は、this.FirstName(null)を呼び出した後です。エラーはすぐに表示されます!プロパティがクリアされた後でも、ボタンを押したときにのみエラーが表示されるようにしたい

4

2 に答える 2

4

Steve Greatrexが提供するソリューションは次のとおりです:https ://github.com/Knockout-Contrib/Knockout-Validation/issues/210

于 2013-01-11T16:19:25.137 に答える
0

私たちのプロジェクトでも同じ問題がありました。isValidをtrueに強制することで、これを解決しました。

addItem: function () {
            if (!viewModel.isValid()) {
                viewModel.errors.showAllMessages();
                return false;
            } else {
                //DO SOMETHING
                this.SomeCollection.push(newInterviewee);
                this.FirstName(null);
                viewModel.isValid(true);
            }
        },

これを実行できるようにするには、次のように計算されたisValidのko.validationの定義を上書きする必要があります。

observable.isValid = ko.computed({
    read: function() {
        return observable.__valid__();
    },
        write: observable.__valid__
    }
);
于 2013-01-10T09:26:16.253 に答える