Angular:为什么字段$ invalid在其他视图中是真的?

时间:2016-06-13 10:31:53

标签: javascript angularjs

我添加了一些条件来显示我的修订字段。基本上它会接受一个数字和一个必填字段,所以我添加了一些验证检查。我已从“编辑”视图中排除了此字段。而且我也指定了条件。

 ng-show="editMode=='addNew' || editMode=='addDate'"

即使在编辑视图中我的字段没有显示..但某处$ invalid对所有视图都变为

 <div class="form-group" ng-show="editMode=='addNew' || editMode=='addDate'">
     <label for="editmyRevision" ng-class="{'col-sm-3':editMode=='addNew'}"  class="col-md-2 control-label">Revision</label>
    <div ng-class="{'col-sm-9':editMode=='addNew'}" class="col-md-10">
     <input class="form-control" ng-model="editmyRevision"name="revision" ng-required="editMode=='addNew' || editMode =='addDate'" ng-maxlength="5" ng-Pattern="/^[0-9]*$/"></input>
       <span class="has-error help-block" data-ng-show="prodEdit.revision.$invalid">Acceptable formats: 100~99999</span>

   </div>
    </div>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

ng-show不会从表单中删除输入。它只会为其设置display:none样式,因此它仍会使表单无效。

请尝试使用ng-if

<div class="form-group" ng-if="editMode=='addNew' || editMode=='addDate'">

答案 1 :(得分:1)

代码中有很多error syntax$invalid申请form而不是input

变化:

<input class="form-control" ng-model="editmyRevision"name="revision" ng-required="editMode=='addNew' || editMode =='addDate'" ng-maxlength="5" ng-Pattern="/^[0-9]*$/"></input>
<span class="has-error help-block" data-ng-show="prodEdit.revision.$invalid">Acceptable formats: 100~99999</span>

要:

<input class="form-control" ng-model="editmyRevision" name="revision" ng-pattern="/^[0-9]{3,5}$/"/>
<span class="has-error help-block" data-ng-show="prodEdit.revision.$error">
   Acceptable formats: 100~99999
</span>