在AngularJS中,如何编写可重用的ng模式?
在我的应用程序中的几个地方,我必须验证一个字段是否是有效的法国电话号码。 像这样:在AngularJS中,如何编写可重用的ng模式?,angularjs,Angularjs,在我的应用程序中的几个地方,我必须验证一个字段是否是有效的法国电话号码。 像这样: 如果不复制/粘贴regex,如何使正则表达式被应用程序中的几个输入字段重用 如何本地化regex 调整ngPattern指令: .directive("customPhonePattern", function () { return { restrict: 'A', require: '?ngModel', link: function (scope
- 如果不复制/粘贴
,如何使正则表达式被应用程序中的几个输入字段重用regex
- 如何本地化
regex
.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
插入您需要的控制器中,并使用likeconfig.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在我的情况下,输入字段不属于同一个控制器。是否可以使用过滤器
或服务
?那么指令是更好的方法。