簡體   English   中英

收聽Backbone.View中的兒童活動

[英]Listen to Child Events in Backbone.View

我想在Backbone.View中聽一個孩子的事件。 我認為這將是正確的方法,但我不確定。 未調用父級中的更新功能。 謝謝您的幫助。

text.js.coffee

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)

這是代碼的簡化版本,所以如果有什么遺漏,請告訴我,我將對其進行更新。

很好,Backbone視圖中有Backbone.Events混合是有原因的。

但是,您在該代碼中有幾個問題。 你需要解決的是什么觸發了事件,要觸發的觀點,而不是它的el ; 這個:

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

應該:

@trigger('update', @)

我也將@el切換為just @以便偵聽器可以訪問整個視圖對象,而不僅僅是其el

並且,偵聽器應綁定一個函數,而不是該函數的返回值:

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

如果使用@update()則將調用@update並將其返回值綁定到"update"事件。 您可能還需要使用粗箭頭( =>定義update

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

調用update時,它將為您提供正確的@ (又稱this )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM