Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AngularJS中,如何编写可重用的ng模式?_Angularjs - Fatal编程技术网

在AngularJS中,如何编写可重用的ng模式?

在AngularJS中,如何编写可重用的ng模式?,angularjs,Angularjs,在我的应用程序中的几个地方,我必须验证一个字段是否是有效的法国电话号码。 像这样: 如果不复制/粘贴regex,如何使正则表达式被应用程序中的几个输入字段重用 如何本地化regex 调整ngPattern指令: .directive("customPhonePattern", function () { return { restrict: 'A', require: '?ngModel', link: function (scope

在我的应用程序中的几个地方,我必须验证一个字段是否是有效的法国电话号码。 像这样:


  • 如果不复制/粘贴
    regex
    ,如何使正则表达式被应用程序中的几个输入字段重用

  • 如何本地化
    regex


调整ngPattern指令:

.directive("customPhonePattern", function () {
    return {
        restrict: 'A',
        require: '?ngModel',
        link: function (scope, elm, attr, ctrl) {
            if (!ctrl) return;

            var patternExp = "/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/";

            attr.$observe('customPhonePattern', function (locale) {
                switch (locale) {
                    case "EN":
                        patternExp = "";
                        break;
                    case "DE":
                        patternExp = "";
                        break;
                }

                var regexp = new RegExp(patternExp);

                ctrl.$validate();
            });

            ctrl.$validators.pattern = function (value) {
                return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
            };
        }
    };
})
用法


调整ngPattern指令:

.directive("customPhonePattern", function () {
    return {
        restrict: 'A',
        require: '?ngModel',
        link: function (scope, elm, attr, ctrl) {
            if (!ctrl) return;

            var patternExp = "/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/";

            attr.$observe('customPhonePattern', function (locale) {
                switch (locale) {
                    case "EN":
                        patternExp = "";
                        break;
                    case "DE":
                        patternExp = "";
                        break;
                }

                var regexp = new RegExp(patternExp);

                ctrl.$validate();
            });

            ctrl.$validators.pattern = function (value) {
                return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
            };
        }
    };
})
用法


您可以定义如下常量值

var config = {
  patternLong: "/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/",
  patternShort: "/^[a-zA-Z0-9_.,-]*$/"
};

angular.module('myApp').value('config', config);

将此
config
插入您需要的控制器中,并使用like
config.patternLong
您可以定义如下常量值

var config = {
  patternLong: "/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/",
  patternShort: "/^[a-zA-Z0-9_.,-]*$/"
};

angular.module('myApp').value('config', config);

将此
config
插入您需要的控制器中,并使用类似
config.patternLong

的方法,只需在作用域上定义它并将其传递给
ng pattern=“pattern”
@NewDev在我的情况下,输入字段不属于同一个控制器。是否可以使用
过滤器
服务
?那么指令是更好的方法。只需在范围上定义它,并将其传递给
ng pattern=“pattern”
@NewDev在我的情况下,输入字段不属于同一个控制器。是否可以使用
过滤器
服务
?那么指令是更好的方法。