假设我们有一个简单的实体级验证器:
function entityIdIsValidFn(entity,context) {
if (entity.Id1)
return true;
if (entity.Id2)
return true;
return false;
}
var entityIdValidator = new breeze.Validator("entityIdValidator", entityIdIsValidFn, { messageTemplate: "Id1 or Id2 must be defined" });
var entityType = manager.metadataStore.getEntityType("Entity");
entityType.validators.push(entityIdValidator);
现在,如果我尝试在angularjs视图中显示验证错误消息,请执行以下操作:
<div ng-repeat="error in selectedEntity.entityAspect.getValidationErrors() " class="alert alert-danger">{{error.errorMessage}}</div>
我得到了一堆错误:达到10 $ digest()迭代。中止!错误。
如果我有验证器只附加到属性验证错误将显示正常但是一旦我将avalidator附加到实体类型我遇到了麻烦。任何人都知道为什么会发生这种情况,从而如何正确显示验证错误消息?
非常感谢任何帮助。
答案 0 :(得分:1)
虽然我没有收到你的错误,但我可以复制我自己的错误。在getValidationErrors
(breeze.debug.js v.1.4.6的第3839行)中有一个Breeze错误,它在错误集合上进行迭代,测试属性名称。
ve.property.name === propertyName
实体级验证错误(ve
)没有属性,因此在尝试访问未定义的property.name
时代码失败并出现空引用错误。
临时解决方法可能是使用
修补此行ve.property && ve.property.name === propertyName
我们已经在GitHub中修复了它。它将出现在下一个(1.4.7)版本中。感谢您报告。