D3.js传递绑定函数似乎没有执行该函数

d3.js passing bound function does not appear to execute the function

本文关键字:函数 执行 绑定 D3 js      更新时间:2023-09-26

我正在尝试重用一些使x轴滴答的代码。下面是我放入的方法:

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

请原谅咖啡留言:'

不管怎样,这里是调用它的代码:

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})")

当这段代码执行时,我没有得到任何标记。我难住了。任何想法吗?

好的,nvm,我知道了。

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})")

希望这对某个人有帮助:'