【问题标题】:Knockout Validation on Array阵列上的淘汰赛验证
【发布时间】:2012-10-17 02:03:52
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • Knockout 似乎在将对象添加到数组的方式上存在问题。如果对象是在数组定义中创建的,并从 load 方法中删除,它会按预期工作。

标签: arrays knockout.js knockout-validation


【解决方案1】:

我遇到了同样的问题,可以通过将 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
    });

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-18
      • 2011-08-09
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2012-12-05
      • 2012-03-08
      相关资源
      最近更新 更多