我有一个div,其中包含一个在Angular之外生成的图表.但是div在ng-repeat内部,并且当更新范围时,图表被清除.有没有办法防止重绘图表的div?
这是我的HTML:
<div ng-repeat="object in objects">
<span>{{ object.title }}</span>
<div class="chart"></div> <!-- This is being cleared when object changes -->
</div>
Run Code Online (Sandbox Code Playgroud)
我调查了使用bindonce,但我的数据发生了变化,所以我不能(?)使用它.
要清楚,我正在改变的是一个属性object.title.如果整个对象阵列被替换,我不希望图表会留下来.
编辑
在这里写了一个带有问题的JSBin:http://jsbin.com/jijalugu/1/edit?html,js,output
看起来它是导致问题的过滤器.我正在使用过滤器将对象拆分为分区(从这个答案).不知道为什么,没有过滤器它可以正常工作.
您可以使用跟踪表达式:
<div ng-repeat="rows in items | partition:2 track by $index" class="row">
<div ng-repeat="item in rows">
<b>{{ item.title }}</b>
<div id="chart-{{item.title}}" class="chart"></div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Ben Nadel有一篇很棒的博客文章解释跟踪表达及其好处:
此功能允许您使用唯一标识符将JavaScript对象与ngRepeat DOM(文档对象模型)节点相关联.有了这种关联,AngularJS就不会破坏并不必要地重新创建DOM节点.这可以带来巨大的性能和用户体验优势.
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |