我正在尝试使用AngularJS实现一些验证。我有一个输入列表绑定到作用域中的对象列表,我想确保每个输入中的值大于或等于它之前的输入中的值(假设我只输入数值到输入)
这意味着当一个值改变时,需要检查:
我不确定解决此问题的最佳方法,但我更愿意尽可能使用AngularJS验证框架。我看到了3种可能的解决方案:
1:创建自定义指令以执行验证
我找到了这样做的例子,但我在这里有两个问题:
2:使用ui-validation
在这种情况下,我能够将列表项的索引提供给验证功能。所以,这意味着我可以访问上一个列表项的值以进行评估。但我仍然遇到的问题是,它只针对刚刚更改的项目触发了 - 列表中的下一个项目没有重新评估。
3:在每个绑定的输入值
上实现onChange事件处理程序我有一个jsFiddle这个:
但是在这种情况下,我不知道如何调用$ setValidity函数,如果我有一个句柄就是底层范围属性。以下代码失败:
if (eval($scope.items[i].value) < eval($scope.items[i - 1].value)) {
$scope.items[i].$setValidity('notinorder', false);
}
我想我可以使用第二种方法实现它,而根本不涉及AngularJS验证框架 - 但是如果有一种'正确'方式可以使用它,那么我很想知道......