0

Knockout-Validation フレームワークを使用して、viewModel を検証します。

次のように定義されたビューモデルがあります。

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

var viewModel = ko.validatedObservable({
    propety1: ko.observable().extend({ required: true }),
    propety2: ko.computed(function () {
        return this.propety1();
    }, this),
    form_onsubmit: function(form) {
        console.log(this.propety1());
        return false;
    }
});


$(function () {
    ko.applyBindings(viewModel);
});

form_onsubmit 関数で property1 の値を取得できますが、計算されたプロパティ「property2」では機能しません。

それを解決する方法、ありがとう!!!!!!!!!

4

1 に答える 1

1

オブジェクト リテラルを使用する場合は、計算されたプロパティを個別に定義する必要があります。

var viewModel = ko.validatedObservable({
    propety1: ko.observable().extend({ required: true }),    
    form_onsubmit: function(form) {
        console.log(this.propety1());
        return false;
    }
});
viewModel().propety2 = ko.computed(function () {
        return this.propety1();
}, viewModel());

オブジェクト リテラル自体ではなく、グローバル ウィンドウ オブジェクトを参照するため、単に 2 番目の引数として渡すだけthisでは十分ではありません。

于 2013-03-17T15:51:39.883 に答える