【问题标题】:Coffeescript, calling a function from inside a click eventCoffeescript,从点击事件中调用函数
【发布时间】:2012-11-21 17:39:00
【问题描述】:

我有一点 Coffeescript

d3Graph: =>

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

  someButton.click ->
    refreshData()

当我点击“someButton”时,我收到一个错误

Uncaught ReferenceError: refreshData is not defined 

有人看到我的错误吗?

【问题讨论】:

标签: function coffeescript scope


【解决方案1】:

在此处尝试使用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

【讨论】:

    【解决方案2】:

    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()
    

    希望这会有所帮助。

    【讨论】:

    • 嘿,我不是在创建课程,但感谢您的建议。我还在学习coffeescript(显然),我相信我很快就会上课并使用你的建议。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2013-06-20
    • 2017-08-08
    • 2018-10-22
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多