从Angular摘要中排除div

nat*_*ill 7 angularjs

我有一个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

看起来它是导致问题的过滤器.我正在使用过滤器将对象拆分为分区(从这个答案).不知道为什么,没有过滤器它可以正常工作.

j.w*_*wer 8

您可以使用跟踪表达式:

<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节点.这可以带来巨大的性能和用户体验优势.