0

我正在尝试使用 Schema Form 创建一组唯一值,但这似乎是一项不可能完成的任务。

为了简单起见,让我们考虑这个简单的唯一验证器:

$scope.validateUnique = function(value) {
    console.log('running validation');
    var sameName = $scope.model.NoDuplicate.filter(function(item) {
        return item.key === value;
    });
    return sameName.length < 2;
}

打开你的控制台并访问这个Fiddle

第 1 步:添加名为 1 的新项目。

第 2 步:添加名为 12 的新项目。

第 3 步:添加名为 123 的新项目。

第 4 步:添加名为 1234 的新项目。

到目前为止,一切都很好。

步骤 5:将第一项 (1) 更改为 1234,以便出现错误消息。

第 6 步:删除最后一项,使第一项再次唯一。但什么也没有发生。一旦删除了一个项目,该数组就不会再次验证,即使您单击应该触发表单验证的提交按钮,也不会发生任何事情。

这个问题是我的错吗?我的示例代码中是否有错误?还是某种模式形式的错误?如何在删除项目或提交表单时重新验证数组?谢谢!

4

1 回答 1

0

解决了。就 Angular Schema Form 数组验证被破坏而言,我对解决方案并不感到自豪,我想不出更好的解决方案。

我已将此添加到表单指令中

$scope.$watch('formState', () => {
    TestStartActions.updateFormStateFromForm(newVal);
    angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => {
        field.$validate();
    });
}, true);

这是工作小提琴

于 2016-01-25T13:54:03.530 回答