如何在Knockout-Validation的计算属性中获取observable属性的值

时间:2013-03-17 15:36:50

标签: validation knockout.js knockout-validation computed-observable

我使用Knockout-Validation框架来验证viewModel。

我有一个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”中不起作用。

如何解决它,谢谢!!!!!!!!!

1 个答案:

答案 0 :(得分: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作为第二个参数是不够的,因为它将引用全局窗口对象而不是对象文字本身。