javascript - 我可以在 AngularJS 的指令声明中连接吗?

标签 javascript angularjs

我有一个带有 ng-repeat 指令的表单。我正在使用 ng-show 来显示验证错误消息。我尝试在 ng-repeat 指令中添加验证消息,但遇到了麻烦。这是我到目前为止所拥有的:

<form name="rentalApp" ng-controller="RentalAppCtrl">
  <label for="name">Full Name</label>
  <input id="name" name="name" ng-model="app.name">
  <div ng-show="rentalApp.name.$invalid">Please enter your name</div>

  <div ng-repeat="history in app.history">
    <label for="address{{ $index }}">Street Address</label>
    <input id="address{{ $index }}" name="address{{ $index }}" ng-model="history.address">
    <div ng-show="rentalApp.('address' + $index).$invalid">Please enter an address</div>
  </div>
</form>

如您所见,我使用 $index 变量来确保我的 ID 和名称是唯一的。

在我的表格的其余部分中,我正在做一些类似的事情:

<div ng-show="rentalApp.whatever.$invald">Error Message</div>

我遇到的问题是,在 ng-repeat 指令中,索引是动态的。我已经摆弄这个问题有一段时间了,我认为我最接近的解决方案是这一行:

<div ng-show="rentalApp.('address' + $index).$invalid">Please enter an address</div>

但是这不起作用。

如何正确地将单词“address”与 $index 变量连接起来,以沿着 address0 的行创建一个字符串,然后可以在我的ng-show 指令来确定表单元素是否无效?或者,我的做法是否完全错误(不是“Angular 方式”)?

编辑

我正在从控制台查看 rentalApp 对象,而 AngularJS 并未按照我的预期评估 name 属性。具体来说,rentalApp 对象包含 address{{ $index }} 对象,而不是 address0。所以看起来我无法在 name 属性中使用表达式 {{ $index }}

最佳答案

更新

我进行了一项研究,发现除了为其创建自定义指令之外,不可能为名称提供动态值...

但是有一个解决方案可以让您使用 ng-form 指令为每个单独的 ng-repeat 元素验证动态表单...

<div ng-repeat="history in app.history">
      <ng-form name="addressForm">
          <label>Street Address</label>
          <input name="address" ng-model="history.address" ng-required="true">
          <div ng-show="rentalApp['address' + $index].$invalid">Please enter an address</div>
          <span class="alert error" ng-show="addressForm.address.$invalid">Please enter an address</span>
      </ng-form>
</div>

这是你的 PLUNKER ...

关于javascript - 我可以在 AngularJS 的指令声明中连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22544623/

相关文章:

javascript - AngularJS $http.get 将变量作为参数键传递

java - 如何在依赖 JavaScript 的 Struts 表单中处理换行符

javascript - 如何突出显示与 CKeditor 中的正则表达式匹配的元素?

php - 使用rest api的Angularjs $http请求

angularjs - 使用 AngularJS 构建的计算器不显示结果

c# - Breeze - 如何在保存更改调用之前处理同一 View 中两个实体的状态

javascript - 使用 graphql-sequelize 解析器限制递归 GraphQL 架构查询的深度(Node.js、express-graphql)

javascript - 由 1 到 4 个非零数字字符或 1 到 4 个非零数字字符和 1 个字母组成的字符串的正则表达式

javascript - 如何将 domready 事件添加到 infoBubble

javascript - 监视递归 Angular Controller 方法