Как получить значение наблюдаемого свойства в вычисляемом свойстве в Knockout-Validation

Я использую структуру 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);
});

он может получить значение свойства1 в функции form_onsubmit, но не работает в вычисляемом свойстве «свойство2».

как решить, спасибо!!!!!!!


person czclk    schedule 17.03.2013    source источник


Ответы (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 в качестве второго аргумента недостаточно, потому что он будет ссылаться на глобальный объект окна, а не на сам литерал объекта.

person nemesv    schedule 17.03.2013