【问题标题】:d3.js passing bound function does not appear to execute the functiond3.js 传递绑定函数似乎没有执行函数
【发布时间】:2014-08-13 06:26:53
【问题描述】:

我正在尝试重用一些生成 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})")

当这段代码执行时,我没有得到任何滴答声。我难住了。有什么想法吗?

【问题讨论】:

  • 我怀疑这是因为我返回“d3.svg.axis()...”的方式,但我不确定我是否理解发生了什么。

标签: javascript d3.js coffeescript


【解决方案1】:

好的,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})")

希望有一天这对某人有所帮助:\

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    相关资源
    最近更新 更多