Angular - 验证中的$ viewValue或$ modelValue?

时间:2016-08-29 17:15:45

标签: angularjs validation

我是Angular的新手,我想检查我正在进行表单验证。当用户在输入字段中输入超过100个字符时,我想显示相应的消息。 为此我使用$ viewValue。 $ modelValue会更好地用于验证,因为它是在控制器中“保存”的吗?有没有更好的方法来进行这种特定的验证?

        <div class="form-group">
            <label for="Forename" class="control-label col-md-2">Forename</label>
            <div class="col-md-10">
                <input id="forename" type="text" class="form-control"
                       name="detailsForename"
                       required
                       ng-maxlength="100"
                       ng-model="vm.customer.Forename" />
            </div>
        </div>



                    <li ng-show="detailsForm.detailsForename.$error.required">
                        Forename must be filled in
                    </li>
                    <li ng-show="!detailsForm.detailsForename.$valid">
                        Forename was not valid
                    </li>
                    <li ng-show="detailsForm.detailsForename.$viewValue.length > 100">
                        Forename must be no more than 100 characters
                    </li>

更新:我曾尝试过vm.person.Forename,但无论出于何种原因,它都无法正常工作。如果它应该工作,我将重新审视这种可能性。 使用$ valid是不够的,因为如果输入字段为空,我将收到Required的错误消息,并且对于&gt; 100(因为$ valid = false)

1 个答案:

答案 0 :(得分:2)

ngMaxlength docs中所述:&#34;如果ngModel。$ viewValue长于整数,验证器会设置maxlength错误密钥...&#34;

所以在你的情况下:detailsForm.detailsForename.$error.maxlength

您永远不需要从模板访问ngModel's $viewValue$modelValue