为了账号安全,请及时绑定邮箱和手机立即绑定

如何验证使用ng-repeat,ng-show(angular)动态创建的输入

如何验证使用ng-repeat,ng-show(angular)动态创建的输入

动漫人物 2019-07-29 16:44:09
如何验证使用ng-repeat,ng-show(angular)动态创建的输入我有一个使用ng-repeat创建的表。我想为表中的每个元素添加验证。问题是每个输入单元格与其上方和下方的单元格具有相同的名称。我试图使用该{{$index}}值来命名输入,但尽管HTML中的字符串文字显示正确,但它现在正在工作。这是我现在的代码:<tr ng-repeat="r in model.BSM ">    <td>       <input ng-model="r.QTY" class="span1" name="QTY{{$index}}" ng-pattern="/^[\d]*\.?[\d]*$/" required/>       <span class="alert-error" ng-show="form.QTY{{$index}}.$error.pattern"><strong>Requires a number.</strong></span>       <span class="alert-error" ng-show="form.QTY{{$index}}.$error.required"><strong>*Required</strong></span>    </td></tr>我已经尝试删除{{}}from索引,但这也不起作用。截至目前,输入的验证属性工作正常,但不显示错误消息。有人有什么建议吗?编辑:除了下面的好答案,这里有一篇博客文章更详细地介绍了这个问题:http://www.thebhwgroup.com/blog/2014/08/angularjs-html-form-design-part-2 /
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

自从问到这个问题以来,Angular团队已经通过动态创建输入名称来解决了这个问题。

使用Angular 1.3及更高版本,您现在可以执行以下操作:

<form name="vm.myForm" novalidate>
  <div ng-repeat="p in vm.persons">
    <input type="text" name="person_{{$index}}" ng-model="p" required>
    <span ng-show="vm.myForm['person_' + $index].$invalid">Enter a name</span>
  </div></form>

演示

Angular 1.3还引入了ngMessages,这是一种更强大的表单验证工具。您可以使用与ngMessages相同的技术:

<form name="vm.myFormNgMsg" novalidate>
    <div ng-repeat="p in vm.persons">
      <input type="text" name="person_{{$index}}" ng-model="p" required>
      <span ng-messages="vm.myFormNgMsg['person_' + $index].$error">
        <span ng-message="required">Enter a name</span>
      </span>
    </div>
  </form>


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 1079 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信