覆盖angular.js var NUMBER_REGEXP

时间:2015-05-25 07:29:19

标签: javascript angularjs global-variables

我需要角度来验证数字输入字段中科学记数法格式的数字。

为了做到这一点,我在angular.js文件中替换了以下常量(行:18652 v0.13):

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 3

abc
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 3

abc

现在,在“数字”类型的输入中接受像0.045e-10这样的值作为数字。

我希望从我的应用程序而不是angular.js文件中执行此操作,以便在更新框架文件时不必记住再次更改此内容。

我试着简单地在我的主应用控制器的第一行覆盖,如:

var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE]+[-]?\d+)?\s*$/;
//var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/;

但没效果。

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

在您要接受此格式的输入上创建自己的验证。 您可以创建自己的包含正则表达式的常量。

module.constant('SCIENTIFIC_NOTATION_NUM_REGEX', /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE]+[-]?\d+)?\s*$/);

然后将其注入您想要使用它的任何控制器或指令上,并在模板上使用它。

<input name="scientificNotationNum" ng-pattern="ctrl.SCIENTIFIC_NOTATION_NUM_REGEX">

此示例反映了使用视图上的controllerAs将常量绑定到控制器实例的情况。 其他可能性是将其绑定到$ scope。 或者您可以create your own custom input validation重复使用您的应用。