Angular:无法读取属性'长度'使用ng-minlength时未定义

时间:2015-11-06 22:07:18

标签: javascript angularjs

当我开始输入输入并且在检查验证之前我有这个问题ng-minlength和ng-maxlength都没问题我没有得到返回的长度属性并不允许我向用户显示他剩下的字符数量:

<label>Subject</label>
<input type="text" name="subject" required
       ng-minlength="15" ng-maxlength="120" ng-model="subject"/>
<div ng-messages="form.subject.$error" ng-if="form.subject.$touched" class="ng-cloak">
<div ng-message="required" class="angular-error">Subjectis required.</div>
<div ng-message="minlength" class="angular-error">Minimum Length of 15 Characters</div>
</div>

<div class="ng-cloak">{{subjectMaxLength - subjectLength}} </div>

控制器:

$scope.subjectMaxLength = 90;
$scope.$watch('subject', function() {
   $scope.subjectLength = $scope.subject.length;
 });

在有效且超过15个字符后,计数是正确的但在此之前它是冻结的。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

仅在符合ng-minlength / ng-maxlength要求后,才会为模型值指定。在此之前,该值将始终未定义。

请参阅doc示例(您可以在示例表单上测试它): https://docs.angularjs.org/api/ng/directive/input

如果您有兴趣了解为何会出现这种情况,我建议您阅读ngModel.NgModelController页面,尤其是$validate();部分。