最近使用angular时,发现no-repeat有个诡异的现象,代码如下:
箭头所指的是我们今天研究的对象,具有重复数组
接下来,我们repeat一下
结果是。。。
讲道理,代码没错啊,原来是对象中不允许值重复,因为angular需要一个唯一值Key与生成的dom绑定,无法处理重复对象,
解决方法很简单,就是添加track by,代码如下
此语句能将数据重用,假设不慎在数据库上取到了重复数据,也能重用,用该方法能去除$$hashKey的影响。(
ng-repeat会为每一次元素加上一个$$hashKey来识别每一个元素,当我们从后端重新获取数据时,即使数据完全
一样,但是由于hashKey不一样,angular会删除之前的所有dom,重新生成新的dom,这样效率就会大大降低)
使用时注意点:如果语句中有orderBy(排序)时,track by要放在其后面,不然那酸爽,自己体会去吧。