数组上的Knockout验证

mik*_*ked 10 arrays knockout.js knockout-validation

我正在使用Knockout Validation来验证数组中的字段.它将显示错误消息,但我无法使用isValid()或ko.validation.group()来工作.我需要其中一个来处理提交.

errors = ko.validation.group(contactList(), {deep:true});
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/mduey/hEJWJ/80/

谢谢!

use*_*883 5

我有同样的问题,可以通过将observable配置属性设置为false来解决.每次调用errors函数时,都会触发深度验证:

    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
    });
Run Code Online (Sandbox Code Playgroud)


Vya*_*huk 3

问题在于,当您将新的数组元素添加到observableArray. 这是一个快速的脏解决方案,可以进一步优化。

每次向我添加新元素时observableArray,我都会运行验证,将其结果放入可观察中,以便可以通过视图绑定正确跟踪它。它可以通过throttle设置进一步改进,因此验证不会针对每次推送到数组(实际的循环)运行。正如我所看到的,当前ko.validation.group返回的不是正确的可观察值,所以我必须为它创建一个包装器。