我找不到任何解决方案,所以这是我的问题:
我已经为一个小表单设置了验证,您可以在其中将项目添加到集合中(observableArray,稍后实际保存到 DB)。
第一个项目的验证工作正常,验证消息显示,但第二次验证消息不会显示(验证本身有效,您不能添加项目)。
这就是我所做的:
例如在 newSchool 对象中设置验证
self.City = ko.observable(item ? item.City : '').extend( { required: true });
在 MainViewModel 中构建验证组
self.schoolErrors = ko.validation.group({ schools: self.newSchool }, { deep: true });
在 MainViewModel 中:检查错误,否则推送到集合中,使用新的默认值初始化 newSchool 可观察对象
self.addSchool = function () { if (self.schoolErrors().length > 0) { self.schoolErrors.showAllMessages(); return; } self.schools.push(self.newSchool()); self.newSchool(new School()); self.newSchool().load(); self.schoolErrors = ko.validation.group({ schools: self.newSchool }, { deep: true }); };
出于调试原因,我打印出学校对象中已验证可观察值的 isValid 和 isModified 值。这些似乎很好。在我插入第一项后, isValid 和 isModified 都返回为false。
唯一的问题,如前所述,不再显示验证消息。
对我来说也很奇怪:我不使用自定义验证消息模板,除非在一种情况下,我需要针对计算字段进行验证。这会出现,但“内置”验证消息不会。
任何想法?