Coffeescript,从click事件中调用函数

时间:2012-11-20 20:07:52

标签: function coffeescript scope

我有一点Coffeescript

d3Graph: =>

  refreshData: ->
    console.log "refresh data called"

  someButton.click ->
    refreshData()

当我点击" someButton"我收到错误

Uncaught ReferenceError: refreshData is not defined 

有人看到我的错误吗?

2 个答案:

答案 0 :(得分:3)

尝试在此使用refreshData =代替refreshData:

d3Graph: =>

  refreshData = ->
    console.log "refresh data called"

  someButton.click ->
    refreshData()

如果这不起作用,则必须提供更完整的代码。

如果遇到这样的问题,看看输出JavaScript是什么总是有帮助的。

例如,在这种情况下,您的原始代码输出:

var _this = this;

({
  d3Graph: function() {
    ({
      refreshData: function() {
        return console.log("refresh data called");
      }
    });
    return someButton.click(function() {
      return refreshData();
    });
  }
});

所以很明显,没有名为refreshData的变量/函数!

答案 1 :(得分:0)

Jamie Wong正确地解释了这一点。我只是想知道你是否试图将d3Graph用作一个类:

class d3Graph

  @refreshData: ->
    console.log "refresh data called"

someButton.click ->
  d3Graph.refreshData()

或图表是实例时:

class d3Graph

  refreshData: ->
    console.log "refresh data called"

graph = new d3Graph()

someButton.click ->
  graph.refreshData()

希望这有帮助。