如何将 ko.validation 错误与相关视图模型字段名称联系在一起

2023-11-27

我正在使用 Knockout.Validation,我希望能够显示错误摘要,其中每行显示错误消息(显然!)以及与其相关的视图模型上的字段名称,例如

  • 年龄 - 请输入数字
  • 出生日期 - 请输入正确的日期

到目前为止,我已经有了一个 validObservable 来包装我的视图模型,这会自动在我的视图模型上放置一个错误数组,其中包含我的所有错误。但是,我看不到任何简单的方法来检索每个错误与哪个字段相关。

我知道我可以自己遍历视图模型,从 isValid 属性构建我自己的错误集合 - 但这是我唯一的选择吗?

获得字段名称后,我可以将验证摘要映射到该字段的相关“友好”标签(例如“出生日期”而不是“出生日期”)。

这是我到目前为止的代码的简化版本:

视图模型

function PersonModel(){
   var self = this;
   self.Age = ko.observable().extend({ number: true});

   self.DateOfBirth = ko.observable({ date: true});             
   self.Validate = function() {                           
       if (!self.isValid()) {                                         
          self.errors.showAllMessages();        
          return false;          
       }
       return true;
    };    

ko.validation.init({
                grouping: { deep: true, observable: true },
                registerExtenders: true,
                messagesOnModified: true,
                insertMessages: true
            });

ko.applyBindings(ko.validatedObservable(new PersonModel()));

Html

<ul data-bind='foreach: model().errors' class="message">
    <li>
           <span data-bind='text:  $data'></span>
    </li>
</ul>

非常感谢


您可以对任何变量使用自定义验证消息。

emailAddress: ko.observable().extend({
    required: { message: 'Email Address: Required field.' }
}),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 ko.validation 错误与相关视图模型字段名称联系在一起 的相关文章