AngularJS动态地使用JSON Schema进行表单验证

时间:2016-12-08 13:28:11

标签: javascript angularjs

我需要动态验证AngularJS中的json。 我正面临从架构到页面加载字段的问题。 我是AngularJS的新手,所以我不太了解它。 我创建了表单,但我无法动态验证它。

    myApp.controller('appController', ['$scope','$http', function($scope, $http) {
        var NUMBER_REGEXP = /^[0-9]+$/;

        $http({ method: 'GET', url: 'JsonSchema.json' })
            .then(function successCallback(response) {
                $scope.data = angular.fromJson(response);
                $scope.data = $scope.data.data;
                console.log($scope.data);
            });

        $scope.greeting = 'success!';

        $scope.handleErrors = function (data) {
            if(data !== undefined && data !== null) {
                angular.forEach(data, function(value, key) {
                    var form = value.form.field;
                    var fields = value.fields.field;
                    var error = form.errors;

                    if(form.compulsory) {
                        $scope.pageError = form.errors.compulsory;
                    }
                    else if(!(NUMBER_REGEXP.test(filds.field))) {
                        $scope.pageError = error.regex;
                    }
                    else {
                        $scope.pageError = "An unexpected error has occurred, please try again later!";
                    }
                });
            }
        }
    }]);

1 个答案:

答案 0 :(得分:0)

一个plunker通常可以解决这类问题,但最终它取决于您使用哪个库来使用JSON Schema进行验证?

我使用AngularJS Schema Form,因此一旦加载了JSON Schema,您就可以在范围上将其设置为分配给要提供架构的表单的值。然后,这将验证表单或在验证之前等待用户输入。

有许多库可以处理独立于表单的数据验证,目前最流行的纯验证是ajv,但djv看起来很有希望。