Angular ng-messages与Angular 1.2类似的功能

时间:2016-03-17 14:30:44

标签: javascript angularjs forms validation

由于IE8的支持,我只能使用Angular 1.2.x,我正在尝试实现一个自定义指令,该指令显示一个表单字段,并为使用自定义验证器验证的字段生成错误消息。

这是我的验证员:

angular.module("validator", [])
    .directive('myValidator', function(){
        return {
            restrict: 'A',
            require: 'ngModel',

            link: function(scope, element, attr, ctrl) {

                function myValidator(ngModelValue) {

                    switch(attr.myValidator){
                        case 'twitter':
                            if (/^@(\w{1,15})$/.test(ngModelValue)) {
                                ctrl.$setValidity('twitterValidate', true);
                            } else {
                                ctrl.$setValidity('twitterValidate', false);
                            }
                            break;
                }

                // return ngModelValue displayed to the user
                return ngModelValue;
            }

            // add parser to existing parsers
            ctrl.$parsers.push(myValidator);

        }
    };
});

和自定义指令:

angular.module('form-fields', [])
    .directive('TwitterField', function(){
        return {
            restrict: 'AEC',
            scope: {
                twitter: '=',
                isRequired: '=required'
            },
            templateUrl: '/path/to/template.html',
        }
    })

和模板:

<label>Twitter</label>
<input type="text" id="twitter" ng-model="twitter" my-validator="twitter" ng-required="isRequired">

一切正常,我可以在<form>中使用指令,并且它们可以正确验证。我可以访问$ scope.form.twitter并查看错误,以便我可以在周围的表单中生成错误消息,但我希望在指令中。这可能吗?

0 个答案:

没有答案
相关问题