1.当 ng-repeat 的数组被替换时, 它默认并不会重新利用已有的 Dom 元素,而是直接将其全部删除并重新生成新的数组 Dom 元素:

2.Dom 的频繁操作是非常不友好的, ng-repeat为什么不能利用已有的 dom 元素去更新数据呢?因为你没有把数组元素的标识属性告诉它,那么两次替换的时候它就没办法追踪了;

3.ng-repeat会为每一个元素加上一个hashkey $$hashKey来识别每一个元素,当我们从后端重新获取数据时,即使数据完全一样,但是由于hashKey不一样,

angular会删除之前的所有dom,重新生成新的dom,这样效率就会大大降低。可以理解为ng-repeat默认是 track by $$hashKey的。

所以,我们应该使用一些不会变的东西来作为标识,比如后端数据的id.

4.列如:

<li class="gwclist" ng-repeat = "gwc in data | orderBy:'-sqtime' track by gwc.ID" ng-click = "gwcdetail(gwc)">
<h5>申请人:{{gwc.sqname}}<span class="pull-right color-dimgray">{{gwc.sqtime}}</span></h5>
<span>用餐时间:{{gwc.mettime}}</span>
<p ng-class="{0:'color-lightyellow',1:'color-red',2:'color-blue',3:'color-dimgray'}[{{gwc.processState | showstyle}}]">流程状态:{{gwc.processState}}</p>
<div class="button-bar" ng-if = "gwc.processState == '未提交'">
<a class="button button-small button-positive" ng-click="submit(gwc.ID)">提交</a>
<a class="button button-small button-stable" ng-click="delete(gwc.ID)">删除</a>
</div>
</li>
优点:这样当重新获取数据时,由于ID没有变,angular就不会去删除原来的dom,只会更新其中的内容,不同的ID再添加新的dom。效率就能提升了;

5.注意:

track by要放在orderBy之后,否则会影响orderBy的效果;

当单一数组有重复元素时,需要使用track by $index来保证两个元素都会渲染,否则只会渲染一个;

最新文章

  1. javascript DOM操作
  2. mysql, count函数容易曲解的地方
  3. 解决winrar压缩软件弹出广告
  4. javascript数组浅谈2
  5. BZOJ 4690 Never Wait for Weights
  6. 最小化安装Centos7后的部署(个人)
  7. 【Unity3D】iOS 推送实现
  8. Android App用MulticastSocket监听组播,为什么连接到不同路由、在不同手机上跑,有的能收到有的收不到
  9. java格式处理工具类
  10. 小胖学PHP总结1-----PHP的数据类型
  11. protobuf 参考资料
  12. MVC常见的控制器,接口,数据层之间的操作
  13. Robomongo连接MongoDB 报 Authorization failed 解决办法
  14. 测试框架httpclent 4.HttpClient Post方法实现
  15. redis 高可用
  16. bzoj 2832
  17. JS设计模式(2)策略模式
  18. NOI 2017 整数(线段树)
  19. POJ2455 Secret Milking Machine
  20. How to export a model from SolidWorks to Google SketchUp

热门文章

  1. 使用junit和eclemma进行简单的代码测试
  2. Android : 高通平台Camera调试之SetpropKey/camxoverridesettings.txt
  3. LeetCode 160 相交链表
  4. 1—ARM中的寄存器
  5. vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用
  6. No mapping found for HTTP request with URI [/crmcrmcrm/css/bootstrap.min.css] in DispatcherServlet with name &#39;springMvc&#39;
  7. JSP是一种语言
  8. python学习第一次笔记
  9. 设置Ubuntu右侧显示扩展屏幕。。。
  10. servlet之ServletRequest与ServletResponse (三)