Javascript ng模式未第二次验证

Javascript ng模式未第二次验证,javascript,angularjs,input,ng-pattern,Javascript,Angularjs,Input,Ng Pattern,我有一个多页面浏览的注册表单,在视图3中,我有一个带有ng模式的输入,用于评估邮政编码。问题是,当我切换视图,然后使用ng模式重新访问视图时,输入变得无效 <input type="text" class="form-control" name="postal" ng-model="user.postal" ng-minlength="1" ng-maxlength="8" maxlength="8" ng-pattern="/(^[ABCEGHJKLMNPRSTVXY]\d[ABCEGH

我有一个多页面浏览的注册表单,在视图3中,我有一个带有ng模式的输入,用于评估邮政编码。问题是,当我切换视图,然后使用ng模式重新访问视图时,输入变得无效

<input type="text" class="form-control" name="postal" ng-model="user.postal" ng-minlength="1" ng-maxlength="8" maxlength="8" ng-pattern="/(^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]( )?\d[ABCEGHJKLMNPRSTVWXYZ]\d$)|(^\d{5}(-\d{4})?$)/gmi" required>

您知道为什么这会变得无效吗?

下面是一段工作代码,它在视图之间切换时维护了有效的邮政编码和用户名。我更改了您的模式字符串以使其适合我,但您的可能会很好。我只是想要一些更简单的测试。模式匹配xxxxx | xxxxx-xxxxx

用户对象将显示在每个视图上。 邮政编码仅在有效时显示

如果您使用的是ngView,我发现嵌套在控制器中并从路由配置中删除控制器选项是最容易的。当ngview更新时,它看起来像是一个新的控制器被实例化了,并且您得到了一个新的作用域。您以前的输入将丢失,并且无效:

var testApp=angular.moduletestApp,['ngRoute']; testApp.config['$routeProvider', 函数$routeProvider{ //这里的每个视图都共享同一个控制器。如果传入,ng视图将为您提供一个新控制器。 $routeProvider.when/view1{ //改为使用TemplateURL引用外部页面 模板:“视图1压缩:{{user}}” //控制器:testCtrl*可能这是您的问题* } .when/view2{ //改为使用TemplateURL引用外部页面 模板:“视图2名称:{{user}}” }; } ]; testApp.controllertestCtrl,函数$scope,$http{ $scope.user={}; }