检查Angular JS版本1.1.5中动态字段名称的$ DIRTY和$无效



i具有动态字段名称,例如:此处字段名称来自控制器,并且是动态生成的。我正在尝试进行验证,我想为他们打印$ dirty和$无效的标志。

<div ng-repeat="fruit in fruits">
<ng-form name="myForm">
**dirty: {{myForm.fruitId_[fruit.fruitname].$dirty}}
invalid: {{myForm.fruitId_[fruit.fruitname].$invalid}}**

此字段是必需的 请以最多的8个字符输入

以下两个语句:

**dirty: {{myForm.fruitId_[fruit.fruitname].$dirty}}
invalid: {{myForm.fruitId_[fruit.fruitname].$invalid}}**  

什么都不显示。感谢您的投入。

这是plunker:http://plnkr.co/edit/ehe3mnkncxv5pzdrxl8z?p=preview

修复:我认为Angular需要{{}}对于版本1.1.5中的字段名称,并且这些括号也需要逃脱。

<ng-form name="myForm"> 
      <div ng-repeat="fruit in fruits">
       dirty: {{myForm['{{fruit.fruitname}}'].$dirty}}
       invalid: {{myForm['{{fruit.fruitname}}'].$invalid}} 
       {{fruit.fruitname}} Textbox: <input type="text" name="{{fruit.fruitname}}" auto-id="fruitId_{{color}}_{{fruit.fruitname}}" ng-required="true" ng-maxlength="8" ng-model="data[fruit.fruitname]"  />
                <div class="validation-message" ng-show="myForm['{{fruit.fruitname}}'].$dirty && myForm['{{fruit.fruitname}}'].$invalid">
                    <span ng-show="myForm['{{fruit.fruitname}}'].$error.required">This field is required</span>
                    <span ng-show="myForm['{{fruit.fruitname}}'].$error.maxlength">Please enter at the most 8 characters</span>
                </div>
       </div>
  </ng-form>

我使用工作版本-http://plnkr.co/edit/smwxxi38mged7ujntjue?p = preview更新了plunker。

已发布的代码中有几个问题:

  1. 您使用的是Angular的过时版本。使用最后一个稳定的一个,它确实支持动态字段
  2. 您每个字段的形式总是具有相同名称,而不是全局形式
  3. 您以字段本身的名称重复了" myform"的名称。这是不必要的,令人困惑的
  4. 您表达式中使用的名称无效。

这是一个工作示例:

<form name="myForm">
  <div ng-repeat="fruit in fruits">
   dirty: {{myForm['fruitId_' + fruit.fruitname].$dirty}}
   invalid: {{myForm['fruitId_' + fruit.fruitname].$invalid}}  
   {{fruit.fruitname}} Textbox: <input type="text" name="fruitId_{{fruit.fruitname}}" ng-required="true" ng-model="data[fruit.fruitname]" />
  </div>
</form>

最新更新