如何使向observableArray添加无效项使validatedObservable with Knockout Validation无效
我有一个表单,其中包含一些字段和用户可以添加的项目列表。要使表单有效,表单上和列表中所有项目中的所有字段都必须有效。当新项目添加到列表中时,它将无效,因为所有必填字段都将为空 不幸的是,敲除验证似乎没有看到这一点,并将表单报告为有效。列表项中的各个字段将独立验证,并显示“此字段是必需的。”消息,但包含所有报告的validatedObservable为true()。更奇怪的是,如果我通过编辑列表添加之前存在的一个字段使表单变得无效,那么突然间一切都开始正常工作 以下是我正在处理的问题的一个示例:如何使向observableArray添加无效项使validatedObservable with Knockout Validation无效,validation,knockout.js,knockout-validation,Validation,Knockout.js,Knockout Validation,我有一个表单,其中包含一些字段和用户可以添加的项目列表。要使表单有效,表单上和列表中所有项目中的所有字段都必须有效。当新项目添加到列表中时,它将无效,因为所有必填字段都将为空 不幸的是,敲除验证似乎没有看到这一点,并将表单报告为有效。列表项中的各个字段将独立验证,并显示“此字段是必需的。”消息,但包含所有报告的validatedObservable为true()。更奇怪的是,如果我通过编辑列表添加之前存在的一个字段使表单变得无效,那么突然间一切都开始正常工作 以下是我正在处理的问题的一个示例:
如何让淘汰验证在添加新列表项后立即开始监控它们?这并不理想,我仍然希望找到一个更干净的解决方案,但现在我要做的是在viewModel中添加一个可观察的对象,validatedObservable的唯一目的是使其无效,以便淘汰验证能够进行开始拾取新列表项中的更改
var viewModel={
项目:ko.observableArray([]),
test:ko.observable('e').extend({required:true}),
无效值:ko.observable('a').extend({required:true}),
添加:函数(){
viewModel.items.push({
名字:ko.observable(“”).extend({required:true}),
lastName:ko.observable(“”).extend({required:true})
});
viewModel.invalidater(“”);
viewModel.invalidater('a');
},
提交:函数(){
if(viewModel.errors.isValid()){
警惕(‘谢谢’);
}
否则{
警报('请检查您的提交。错误:'+viewModel.Errors.Errors().length);
viewModel.errors.errors.showAllMessages();
}
}
};
viewModel.errors=ko.validatedObservable({
项目:viewModel.items,
测试:viewModel.test,
失效者:viewModel.Invalidater
});
ko.validation.init({
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: null,
grouping: {
deep: true,
live: true
}
},
true);
var viewModel = {
items: ko.observableArray([]),
test: ko.observable('e').extend({ required: true }),
add: function(){
viewModel.items.push({
firstName: ko.observable('').extend({ required: true }),
lastName: ko.observable('').extend({ required: true })
});
},
submit: function() {
if (viewModel.errors.isValid()) {
alert('Thank you.');
}
else {
alert('Please check your submission. Errors: ' + viewModel.errors.errors().length);
viewModel.errors.errors.showAllMessages();
}
}
};
viewModel.errors = ko.validatedObservable({items: viewModel.items, test: viewModel.test});
ko.applyBindings(viewModel);