AngularJS 1.3 模式验证绑定不起作用

AngularJS 1.3 pattern validation binding not working

在最近的几个版本中,我一直在使用 AngularJS 的正则表达式模式验证,并且效果很好。

我的应用程序要求验证模式由范围 属性 公开,相应的 AngularJS 验证指令绑定到该范围。在 v1.3 之前,它看起来像这样:

// On the controller
$scope.validationPattern = "^\d*$"; // Allow only numeric digits

<!-- in the HTML page --->
<input type="text" name="age" ng-pattern="/{{validationPattern}}/" />

现在已将 AngularJS 更新到 v1.4(绕过 v1.3),我发现上述方法不再有效。查看 migration notes for v1.3,我发现这是预期的行为,需要一种新方法,看起来像这样:

// On the controller
$scope.validationRegexp = /^\d*$/; // Use a RegExp instead of a string

<!-- in the HTML page --->
<input type="text" name="age" pattern="{{validationRegexp}}" />

但是,我根本无法让它工作。如果我将验证模式内联(在 HTML 输入元素内),它工作正常,但是当移动到范围对象并绑定到 patternng-pattern 指令时,不会发生验证。

Here's a JSFiddle 说明了问题。

有什么建议吗?

您应该只使用范围变量的名称:

<input type="text" name="age" ng-pattern="validationPattern" />