ng-minlength和ng-pattern阻止绑定

时间:2015-08-13 05:56:54

标签: angularjs angularjs-directive angularjs-scope

我已将输入字段定义为

<form name="signUpForm">
<input type="text" name="username" ng-minlength="8" ng-maxlength="64" ng-model="user.username" ng-pattern="/((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^]))/">
</form>

将控制器中的用户定义为

$scope.user{};

现在,当我在HTML中绑定user.username值时,它会阻止它。

<p ng-if="user.username.length > 0">Display True</p>

即使我只是将其值绑定在HTML中

{{user.username}}

没有显示。

现在,如果我从输入字段中删除ng-pattern为: -

<input type="text" ng-minlength="8" ng-maxlength="64" ng-model="user.username">

然后只有它的结合,并且在满足ng-minlength =“8”条件之后也是如此。表示'12345678','1234567'未显示。

还有一个问题是,如果我使用ng-pattern,则ng-minlength验证不起作用。

<p ng-if="signUpForm.username.$error.minlength">Please enter minimum length</p>

1 个答案:

答案 0 :(得分:1)

您可以尝试设置表单。$ setViewValue.length而不是模型的长度

例如:

<p ng-if="signUpForm.username.$setViewValue.length > 0">Display True</p>

这是我找到的解决方案: How do I prevent AngularJS from unbinding a form input's value from its model when it's invalid?