我想在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)
这是代码的简化版本,所以如果有什么遗漏请告诉我,我会更新它。
答案 0 :(得分:1)
没关系,Backbone视图混合Backbone.Events
是有原因的。
但是,您在该代码中遇到了一些问题。你需要修复的是触发事件的内容,你想要在视图而不是el
上触发;这样:
$(@el).trigger('update', @el)
应该是:
@trigger('update', @)
我还将@el
切换为@
,以便侦听器可以访问整个视图对象,而不仅仅是el
。
并且,侦听器应该绑定一个函数而不是函数的返回值:
@_styleToolbar.on("update", @update)
如果您使用@update()
,那么您将调用@update
并将其返回值绑定到"update"
事件。您可能还希望使用fat-arrow (=>
)定义update
:
update: (toolbar) =>
# update text color, font etc
在调用@
时,这将为您提供正确的this
(AKA update
)。