数组上的Knockout验证

时间:2012-10-26 19:24:19

标签: arrays knockout.js knockout-validation

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

errors = ko.validation.group(contactList(), {deep:true});

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

谢谢!

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,可以通过将observable config属性设置为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
    });

答案 1 :(得分:3)

问题是,当您向observableArray添加新数组元素时,不会运行验证。 Here is quick an dirty solution which can be optimized further.

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