Ada*_*ner 2 javascript angularjs angularjs-ng-repeat angularjs-track-by
假设我正在ng-repeat结束images,这是一个具有a src和caption属性的对象数组.
var images = [
{src: 'a.jpg', caption: 'a'},
{src: 'b.jpg', caption: 'b'},
{src: 'c.jpg', caption: 'c'},
{src: 'd.jpg', caption: 'd'},
{src: 'e.jpg', caption: 'e'},
{src: 'f.jpg', caption: 'f'},
{src: 'g.jpg', caption: 'g'},
{src: 'h.jpg', caption: 'h'},
{src: 'i.jpg', caption: 'i'},
{src: 'j.jpg', caption: 'j'},
];
Run Code Online (Sandbox Code Playgroud)
假设可能存在重复的图像,因此src+ caption组合不能确保唯一性.我想track by,但似乎除了之外没有办法做到这一点$index.
$index对我来说似乎是一个糟糕的解决方案 想象一下,第一张图片(a)被删除了.然后将改变所有后续图像的索引,因此必须重新渲染整个列表.这对于10个项目的列表来说并不算太糟糕,但它有更大的列表.
思考?
此外,如果确保src+ caption 是唯一的,该怎么办?我怎么能track by多个属性?
是否track by通过将跟踪的媒体资源上的工作$$watchers?喜欢track by image.id做什么$scope.$watch(image.id, cb)?
1)你说得对.$ index是给出约束的唯一方法,并不是最优的.
2)语法是"逐个表达式".表达式可以是任何有效的角度表达式,因此
track by image.src + image.caption
Run Code Online (Sandbox Code Playgroud)
完全有效.
3)跟踪不使用观察者.ngRepeat指令维护由跟踪表达式索引的模型和DOM节点的内部映射.它尝试尽可能重用DOM节点(和范围).它唯一值得关注的是系列.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |