我正在使用 Knockout.Validation 并且我希望能够显示错误摘要,其中每一行都显示错误消息(显然!)以及与之相关的视图模型上的字段名称,例如
- 年龄 - 请输入数字
- 出生日期 - 请输入正确的日期
到目前为止,我已经有一个经过验证的Observable 包装了我的视图模型,这会自动在我的视图模型上放置一个错误数组,其中包含我的所有错误。但是我看不到任何简单的方法来检索每个错误与哪个字段相关。
我知道我可以自己遍历视图模型,从 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>
非常感谢