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());

仅仅this作为第二个参数传递是不够的,因为它将引用全局窗口对象而不是对象字面量本身。

于 2013-03-17T15:51:39.883 回答