d3.js传递绑定函数似乎不执行该函数

时间:2014-08-12 21:44:54

标签: javascript d3.js coffeescript

我正在尝试重用一些使x轴刻度的代码。这是我把它放进去的方法:

xTicks: (scale, dayTickFormat) ->
    d3.svg.axis().scale(scale).orient("bottom")
    .ticks(d3.time.days, 1)
    .tickSize(10)
    .tickFormat(dayTickFormat)
    .tickPadding(8)

请原谅coffeescript:\

无论如何,我这里是调用它的代码:

drawTicks: (chart, chartOptions, margin, x, y, num_y_ticks) ->

    xTickGroup = chart.append("g").attr("class", "day-ticks")
    .call(@xTicks.bind(@, x, dayTickFormat))
    .attr("transform", "translate(#{chartOptions.offset.left}, #{chartOptions.height - 10})")

当这段代码执行时,我没有得到任何刻度。我很难过。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,恩,我明白了。

call()没有调用" d3.svg.axis()"它,它正在调用我缠绕它的方法。所以,如果我将我的方法存储在这样的变量中:

xTicks = @xTicks(x, dayTickFormat)

我可以更简单地称它为:

xTickGroup = chart.append("g").attr("class", "day-ticks")
.call(xTicks)
.attr("transform", "translate(#{chartOptions.offset.left}, #{chartOptions.height - 10})")

希望有一天能帮到某人:\