0

Backbone.View で子のイベントを聞きたいです。これが正しい方法だと思いましたが、よくわかりません。親の update 関数が呼び出されていません。助けてくれてありがとう。

text.js.コーヒー

class App.Views.Text extends Backbone.Views

  initialize: ->
    @_styleToolbar = App.Views.StyleToolbar el: $("#style_toolbar")
    @_styleToolbar.on("update", @update())

  update: ->
    # update text color, font etc

style_toolbar.js.coffee

class App.Views.StyleToolbar extends Backbone.Views
  'change .font_face select' : 'update'

  update: (e) ->
    $(@el).trigger('update', @el)

これはコードの簡略化されたバージョンであるため、不足しているものがあればお知らせください。更新します。

4

1 に答える 1

1

それは問題ありません。バックボーン ビューはBackbone.Events何らかの理由で混在しています。

ただし、そのコードにはいくつかの問題があります。イベントをトリガーしているものを修正する必要があります。ビューではなくビューでトリガーしたいですel。これ:

$(@el).trigger('update', @el)

次のようにする必要があります。

@trigger('update', @)

また、リスナーがビューオブジェクトだけでなくビューオブジェクト全体にアクセスできるように、に切り替え@elました。@el

また、リスナーは関数の戻り値ではなく、関数をバインドする必要があります。

@_styleToolbar.on("update", @update)

使用する場合は、その戻り値を@update()呼び出してイベントにバインドします。太い矢印 ( )で定義することもできます。@update"update"update=>

update: (toolbar) =>
  # update text color, font etc

これにより、が呼び出されたときに権利@(AKA this)が与えられます。update

于 2012-07-23T23:46:46.017 に答える