我使用nvd3
multiChart
,我有一个使用$timeout
的函数,然后计算并更改y轴ticks属性:transform: translate(x, y)
y值。它可以在90%的时间内正常工作,但有时(并且始终如一)d3.selectAll
会发现更多"滴答"超出预期。我看看DOM,只有6个刻度,但是d3.selectAll
找到了10个或11个元素。
var selector = '#' + uid + ' .lineChart .nvd3 .nv-y1.nv-axis.nvd3-svg .nvd3.nv-wrap.nv-axis .tick';
var ticks = d3.selectAll(selector);
ticks.attr("transform", function (label, index) {
return "translate(0," + (baseHeight / 5) * (ticks[0].length - index - 1) + ")"
});
baseHeight
是图表的计算高度(先前计算并给出正确的结果)。
由于ticks[0].length
返回的数字与预期不同(总是应该有6个刻度 - 我自己使用tickValues
来设置它)计算错误并且图表全部搞砸了起来。
我做错了什么?任何想法都将不胜感激。