美文网首页
angular中ng-repeat使用笔记

angular中ng-repeat使用笔记

作者: mochase | 来源:发表于2016-10-19 17:10 被阅读1047次
    ng-repeat = 'item in items'
    

    当items是一个简单数组时,如果数组中有重复数据,会报错.这是因为:出于性能考虑(可能还有其他因素),ng-repeat时会有一个默认的keep track函数来维护视图中dom元素和可遍历对象的一一对应关系,这样当可遍历对象发生变化,例如往数组中push一个值后,视图中的所有dom元素不必全部重新渲染一遍

    所以如果你想repeat一个包含重复数据的数组只需要修改默认的'keep track'函数,可以这样写:

    ng-repeat = 'item in items track by $index'
    

    性能优化

    当遍历一个对象数组时,可能通常会这样写:

    <div ng-repeat="model in collection"> {{model.name}}</div>
    

    这时默认会trackmodel对象,我们可以手动的更改track来减少数据更改时,重新渲染dom元素的工作量(即使collection中对象已经被替换成了新的),这在collection很大时性能提升是显著的

    如果model对象中存在唯一的id属性,我们可以这样写:

    <div ng-repeat="model in collection track by model.id"> {{model.name}}</div>
    

    如果没有唯一的id属性,我们同样可以加上track by $index

    track by必须放在表达式的最后

    关于ng-repeat-start/ng-repeat-end

    必须配套使用
    目前给我的感觉是避免了多余div节点的引入

    相关文章

      网友评论

          本文标题:angular中ng-repeat使用笔记

          本文链接:https://www.haomeiwen.com/subject/nmuxuttx.html