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 输入元素内),它工作正常,但是当移动到范围对象并绑定到 pattern
或 ng-pattern
指令时,不会发生验证。
Here's a JSFiddle 说明了问题。
有什么建议吗?
您应该只使用范围变量的名称:
<input type="text" name="age" ng-pattern="validationPattern" />
在最近的几个版本中,我一直在使用 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 输入元素内),它工作正常,但是当移动到范围对象并绑定到 pattern
或 ng-pattern
指令时,不会发生验证。
Here's a JSFiddle 说明了问题。
有什么建议吗?
您应该只使用范围变量的名称:
<input type="text" name="age" ng-pattern="validationPattern" />