【发布时间】:2015-11-14 16:55:10
【问题描述】:
每当我单击其中一个点时,都会导致图表更新。只有当我在 <nvd3> 元素上有一个 ngClick 指令时才会发生这种情况(即使侦听器函数什么都不做)。如果我删除ngClick,一切都很好。
我正在使用一个非常基本的nvd3 散点图和angular-nvd3。
是什么导致了这种奇怪的互动?
(这段录像的帧率很低,所以很难看,但是每次点击都会重新绘制图表,包括最上面的那个)
这是一个重现问题的 plunker:
http://plnkr.co/edit/F0ZslBaisoHWIp0VcI8o
谢谢!
更新我已将其范围缩小到 angular-nvd3 中的手表。 ngClick 的存在以某种方式导致“数据”发生变化。 此行正在触发刷新:https://github.com/krispo/angular-nvd3/blob/master/dist/angular-nvd3.js#L328 我的代码中没有任何内容可以更改“数据”(还验证了该对象是指令之外的同一个实例),并且我在 angular-nvd3.js 中看不到任何可以更改数据的内容......嗯......
更新 这是我的点击事件监听器(它是空的):
controller.handleChartClick = function(event) {
};
和html:
<div class="col-sm-10">
<nvd3 ng-click="observationsCharts.handleChartClick($event)"
options="observationsCharts.scatterPlotChartOptions"
data="observationsCharts.scatterPlotChartData"></nvd3>
</div>
【问题讨论】:
-
你在 ng-click 上叫什么?
-
您的数据构建是否与 plunkr 中的完全相同?如果问题在示例中没有重现,那么您的代码中肯定有一些不同的地方。你能发布你的实际代码吗?
-
@StaceyBurns,我更新了我的问题和 plunker,请看一下。现在它重现了这个问题,并且它还有一些我在生产代码中使用的数据。其他区别是:我在 plunker 中更新了 d3、nvd3 和 angular-nvd3 的版本(plunker 使用的是旧版本,我没有注意到),并且我还将它剥离到最低代码。
-
@Tera 用于空的点击处理程序。查看更新后的问题。
-
这是有线的。我想解决方法是制作一个绝对定位的元素并使用 ng-click...
标签: angularjs d3.js nvd3.js angular-nvd3