我使用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”中不起作用。
如何解决它,谢谢!!!!!!!!!
答案 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
作为第二个参数是不够的,因为它将引用全局窗口对象而不是对象文字本身。