【发布时间】:2013-02-21 17:51:11
【问题描述】:
我正在尝试创建一个表单部分,该表单的一部分是一个循环遍历对象列表的表格,并且每个对象都允许用户选中/取消选中属性。表单的其余部分工作正常,但我无法在复选框上设置 ng-model 属性。
这是我所拥有的:
<table>
<thead>
<tr>
<td>Objects and Fields</td>
<td>Createable</td>
<td>Deleteable</td>
<td>Readable</td>
<td>Updateable</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="object in myAppObjects">
<td>
{{object.name}} {{object.id}}
<input type="checkbox" name="app_access_{{object.id}}" ng-model="app_access" value="false">
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
起初我尝试设置 ng-model="app_access_{{object.id}}" 以便为每个单元格设置一个唯一的 ng-model。这导致表格行重复了几十次。每个空单元格也将有一个复选框。在给定时间,每个对象和表单中的多个对象将有五个复选框。我需要能够访问控制器中的每个复选框(或者更好的是已选中的列表)。
【问题讨论】:
-
我认为您不能使用 Angular 表达式来命名字段元素。见groups.google.com/d/topic/angular/v5lK1y8-HXQ/discussion
-
对名称使用角度表达式可以正常工作。它只是将它们用于导致麻烦的 ng-model 属性。我认为 Max 在下面的回答为我指明了正确的方向。我得再做一些实验。
-
根据我的经验,不幸的是它并不总是能正常工作。这是一个在使用 Angular 表达式作为名称以及 Angular 表单验证时出现问题的小提琴:jsfiddle.net/mrajcok/teZKX 检查输入元素,似乎评估了 Angular 表达式,但 Angular 验证的东西似乎无法识别它。由于这种情况不起作用,我个人不会在带有任何表单控件的字段名称中使用 Angular 表达式。 YMMV。也许使用复选框可以正常工作。顺便说一句,名称属性对于 Angular 复选框是可选的——你可能不需要它。
-
确实在这种情况下,名称是一个不相关的问题。
-
周末我写了一个使用单选按钮的指令,最后我使用了字段名称的角度表达式。 :-P “我不在带有任何表单控件的字段名称中使用 Angular 表达式”。我想我现在不得不说“如果字段名称与 Angular 表单验证一起使用,我不会在字段名称中使用 Angular 表达式。”感谢您扩展/纠正我对此的理解。
标签: javascript html angularjs angularjs-ng-repeat