AngularJS的“价值”服务能否拥有正则表达式?

时间:2015-04-21 23:37:18

标签: javascript angularjs angularjs-service

我创建了一个角色Value服务,它包含一个正则表达式而不是我将它附加到控制器实例上,即

myService.value('regexValue' {PASSWORD_REGEX: /passwordregex/})


myController(regexValue) { 
    this.regexValue = regexValue.PASSWORD_REGEX;  
}

然后我尝试在输入字段data-ng-pattern属性

中使用此值

<input type="password" data-ng-pattern="myController.regexValue.PASSWORD_REGEX">

但这似乎不适用于ng-pattern指令。

我的问题是如何才能让它发挥作用?

2 个答案:

答案 0 :(得分:2)

你的理论是正确的。 ng-pattern接受模式的字符串表示,内联模式或范围变量。唯一的问题是你在控制器下面的regexValue.PASSWORD_REGEX作为controller.regexValue,然后发抖以访问controller.regexValue.PASSWORD_REGEX。

要么:

myController(regexValue) { 

    this.regexValue = regexValue.PASSWORD_REGEX;  
}

<input type="password" data-ng-pattern="myController.regexValue">

myController(regexValue) { 
    this.regexValue = regexValue;  
}

<input type="password" data-ng-pattern="myController.regexValue.PASSWORD_REGEX">

工作小提琴:http://jsfiddle.net/yrq18bbh/3/

答案 1 :(得分:1)

ng-pattern想要一个模式的字符串表示(没有/),所以你可以通过访问source属性从正则表达式中获取它:

<input type="password" data-ng-pattern="myController.regexValue.PASSWORD_REGEX.source">

&#13;
&#13;
console.log(/foo+bar*?/.source)
&#13;
&#13;
&#13;