ng-repeat 是否重新渲染dom,是根据一个key来判断的

我们常常直接使用$index采用,$index是从0开始自动增加1

1
2
3
4
<div ng-repeat="item in items truck by $index">
<p>{{item.name}}</p>
<p ng-if="item.isShowAge">{{item.age}}</p>
<div>

所以采用上面的类似的形式
下拉刷新是isShowAge由true–>false
会发现并没有按照预想的不显示年纪这个一栏

由于你的$index一直是从0开始所以,angularJS认为ng-repeat是同一个item,不会重新渲染

正确的姿势是采用一下形形式

1
2
3
4
<div ng-repeat="item in items truck by item.id">
<p>{{item.name}}</p>
<p ng-if="item.isShowAge">{{item.age}}</p>
<div>

其中item.id是根据服务出过来唯一id