Coffeescript继承& eventhandler:为什么上下文发生了变化?

时间:2013-03-24 19:13:27

标签: inheritance coffeescript event-handling

我有一个coffeescript类“OutlayForm”和一个子类“EditOutlayForm”。在超类中,eventhandler(convert_amount)绑定到inputfield。当创建超类的对象时,一切正常,但是当创建子类的对象并触发事件处理程序时,似乎上下文丢失了。

错误告诉我在convert_amount中@amount_field是'undefined'和console.log(this) 虽然我使用了双箭头(=>)

,但它给了我输入字段而不是对象

我的代码:

class window.OutlayForm
  ...

  init: (@wrapper) =>
    @bind_buttons()

  bind_buttons: =>
    @amount_field = @wrapper.find('input[name="outlay[amount]"]')
    @amount_field.on('keydown', @convert_amount)

  convert_amount: =>
    #some converting on @amount_field

class window.EditOutlayForm extends window.OutlayForm
  constructor: (@outlay) ->
    @super

  bind_buttons: =>
    super

  #ajax callback:
    @wrapper = $('<div class="edit_outlay_form"></div>')
    @outlay.before(@wrapper.append(data))
    @bind_buttons()

有人知道我做错了吗?

编辑:

首先:我使用Rails 3.2.12,使用coffee-rails gem(3.2.2)和jquery-rails gem。

我找到了错误的来源,但无法解决我的问题。

http://jsfiddle.net/fYDJD/7/

如果我操作这个小提琴,我控制台会像我预期的那样向我显示“sub”。 但如果我在我的服务器上运行相同的代码,我就会“超级”。我改变的一切都是打电话

new D
$ .ready()函数中的

。这个错误是否有可能来自或者它肯定来自我的coffeescript版本? (我无法改变,因为它已经是最新的铁轨宝石)

0 个答案:

没有答案