我正在使用 Knockout Validation 来验证数组中的字段。它将显示错误消息,但我无法让 isValid() 或 ko.validation.group() 工作。我需要其中之一来处理提交。
errors = ko.validation.group(contactList(), {deep:true});
这是小提琴:http: //jsfiddle.net/mduey/hEJWJ/80/
谢谢!
我正在使用 Knockout Validation 来验证数组中的字段。它将显示错误消息,但我无法让 isValid() 或 ko.validation.group() 工作。我需要其中之一来处理提交。
errors = ko.validation.group(contactList(), {deep:true});
这是小提琴:http: //jsfiddle.net/mduey/hEJWJ/80/
谢谢!
我遇到了同样的问题,可以通过将 observable config 属性设置为 false 来解决。每次调用错误函数时都会触发深度验证:
ko.validation.init({
grouping: {
deep: true,
observable: false //important ! Needed so object trees are correctly traversed every time so added objects AFTER the initial setup get included
},
insertMessages: true,
messagesOnModified: true,
debug: false
});
问题是当您将新的数组元素添加到您的observableArray
. 这是一个快速的肮脏解决方案,可以进一步优化。
每次您将新元素添加到您的observableArray
I 运行验证时,将其结果放入 observable 中,以便可以通过视图绑定正确跟踪它。它可以通过throttle
设置进一步改进,因此验证不会在每次推送到数组时运行(实际用于循环)。正如我所看到的,当前ko.validation.group
返回的不是应有的适当可观察对象,因此我必须为它创建一个包装器。