我有以下代码,并且在插入项目后清除属性时,它可以正常工作, EXCEPT 。错误立即出现。
ko.validation.configure({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error'
});
FirstName: ko.observable().extend({
required: true
}),
我在knockout viewmodel中添加了方法
addItem: function () {
if (!viewModel.isValid()) {
viewModel.errors.showAllMessages();
return false;
} else {
//DO SOMETHING
this.SomeCollection.push(newInterviewee);
this.FirstName(null);
}
},
我在HTML中有以下内容:
<div>
<label>First Name</label>
<input data-bind="value: FirstName, validationElement: FirstName, valueUpdate: 'keyup'" class="input" type="text">
</div>
<div>
<div>
<input data-bind="click: addItem" class="button" type="button">
</div>
问题是我调用this.FirstName(null)之后。错误立即出现!我希望错误仅在他们按下按钮后才显示,即使在清除了属性后
答案 0 :(得分:4)
以下是Steve Greatrex提供的解决方案:https://github.com/Knockout-Contrib/Knockout-Validation/issues/210
答案 1 :(得分:0)
我们的项目遇到了同样的问题。我们通过强制isValid为true来解决这个问题。
addItem: function () {
if (!viewModel.isValid()) {
viewModel.errors.showAllMessages();
return false;
} else {
//DO SOMETHING
this.SomeCollection.push(newInterviewee);
this.FirstName(null);
viewModel.isValid(true);
}
},
为了能够这样做,你需要覆盖ko.validation的isValid定义,如下所示:
observable.isValid = ko.computed({
read: function() {
return observable.__valid__();
},
write: observable.__valid__
}
);