0

私はcoffeescriptクラス「OutlayForm」とサブクラス「EditOutlayForm」を持っています。スーパークラスでは、イベント ハンドラー (convert_amount) が入力フィールドにバインドされます。スーパークラスのオブジェクトを作成するとすべて正常に動作しますが、サブクラスのオブジェクトを作成してイベント ハンドラをトリガーすると、コンテキストが失われたように見えます。

エラーは、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/

このフィドルを実行すると、予想どおり、コンソールに「サブ」が表示されます。しかし、これと同じコードをサーバーで実行すると、「スーパー」が得られました。私が変更したすべては、呼び出すことでした

new D

$.ready() 関数で。エラーがそれから発生する可能性はありますか、それとも私のcoffeescriptバージョンから確実に発生しますか? (すでに最新のRails gemなので変更できません)

4

0 に答える 0