ng重复不使用track by更新模型
ng-repeat not update model with track by
我一直在使用检查表模型来处理一组复选框,每个选中的复选框都可以删除。一切似乎都很好,直到我在ng重复中使用它。
问题是,当我添加track by $index
和ng-repeat
时,删除的复选框仍然存在。如果我删除了track by
,它就可以正常工作(但在我真正的应用程序中,我需要track by
才能工作)。
这是一个plnkr,演示
要查看问题,您可以按照以下步骤操作。
- 选择所需的任意复选框
- 删除那些选定的
- 检查"全部检查"按钮
现在看看带有track by的那个,它会保留一些复选框。如果手动检查,则会将旧值添加到列表中。这很奇怪。
任何帮助或解释都将不胜感激,感谢
如果您仍然需要跟踪,请将其与对象的id一起使用。假设对象的id始终是唯一的。
将多个跟踪功能解析为同一密钥是错误的。(这意味着两个不同的对象被映射到同一个DOM元素,这是不可能的。)
因此,取而代之的是:
<tr ng-repeat="verb in verbs track by $index">
<td>
<input type="checkbox" checklist-model="list.verbs" checklist-value="verb.id">
</td>
<td>
{{verb.id}}
</td>
<td>
<span>{{verb.text}}</span>
</td>
</tr>
使用这个:
<tr ng-repeat="verb in verbs track by verb.id">
<td>
<input type="checkbox" checklist-model="list.verbs" checklist-value="verb.id">
</td>
<td>
{{verb.id}}
</td>
<td>
<span>{{verb.text}}</span>
</td>
</tr>
http://plnkr.co/edit/UTtQQJIbtRPdGh0YhRMH?p=preview
相关文章:
- getDocument by id/get input text from button dons'不起作用
- Div and ul list side by side
- TinySort sort by IDs
- Two input forms side-by-side programatically via JavaScript
- ngRepeat filter by array-property
- SQL应该查询's ORDER BY列写入JS代码中
- jQuery如何显示/隐藏Select by Select
- angularjs:自定义直接中的绑定数据在使用“”后不再更新;track-by-;在ng重复中
- jquery increase by 1
- Angular edit by clicking on a tr
- Vue.js"track-by-$index”;,如何单独呈现列表项
- filtet data by checkbox using jquery ajax mysql and php
- Angularjs.undefined不是由“未定义”引起的函数;track-by-;陈述
- ng重复不使用track by更新模型
- Angular Js:您可以将select的默认值与使用'track by'在ng选项中
- 在Angular 1.5中,track by不能与order by一起工作——期望的数组,但收到了
- AngularJS:使用'track by'禁用ng-repeat中的过滤器
- n -repeat track by $index打破图像字段排序
- ngOptions "track by" expression
- 理解 ngRepeat 'track by' 表达式