在erb模板中调用另一种文件形式中定义的CoffeeScript方法

时间:2012-04-02 22:37:33

标签: ruby-on-rails coffeescript erb

我不能在erb模板中调用这个CoffeeScript方法吗?它不起作用,但它似乎应该。

setup.js.coffee

class SetupStepTwo

  include @

  constructor: ->
    @resetView()

  resetView : ->
    console.log('cool');

window.ns1.SetupStepTwo = SetupStepTwo

$ ->
  new SetupStepTwo()

update.js.erb

window.ns1.SetupStepTwo.resetView();

1 个答案:

答案 0 :(得分:0)

您的SetupStepTwo类有一个名为resetView实例方法,但您尝试将其称为方法(或至少当你说这个时,作为(Java |咖啡)脚本中的类方法传递的内容:

window.ns1.SetupStepTwo.resetView();

如果您真的想使用resetView作为类方法,那么您的类看起来应该更像这样:

class SetupStepTwo
  constructor: ->
    @constructor.resetView()

  @resetView : ->
    console.log('cool')

@上的@resetView构成了一个类方法,而@constructor或多或少就像Ruby中的self.class一样。

演示:http://jsfiddle.net/ambiguous/eDdmd/

如果您希望resetView成为实例方法,那么您需要替换它:

window.ns1.SetupStepTwo.resetView();

resetView的实例进行SetupStepTwo调用。