【发布时间】:2017-02-08 08:35:57
【问题描述】:
我真的不明白我应该从trackBy 返回什么。根据我在网上看到的一些示例,我应该返回对象上某些属性的值。这样对吗?为什么我要获取index 作为参数?
比如下面这种情况:
Component.component.ts
constructor() {
window.setInterval(() => this.users = [
{ name: 'user1', score: Math.random() },
{ name: 'user2', score: Math.random() }
],
1000);
}
userByName(index, user) {
return user.name;
}
Component.template.html
<div *ngFor="let user of users; trackBy:userByName">
{{user.name}} -> {{user.score}}
</div>
尽管名称未更改,但此模板中显示的对象仍会更新。为什么?
【问题讨论】:
-
你试过写
let user of users; let index=index; trackBy:userByName(index,user)吗? -
您可以返回索引,该索引对于每个项目都是唯一的。
-
@micronyks,我不明白。你能详细说明吗?举个例子吧?
-
你不明白什么?你能告诉我吗?我告诉过你返回索引就可以了。
-
我不明白 ngFor 的比较机制是如何在
ngTrackBy进来的地方工作的
标签: angular ngfor angularjs-track-by