我在使用Backbone(Marionette)和jQuery自定义DOM事件时遇到问题。
我有自定义插件,当changed_currency
事件在文档上触发时,它会更新元素html内容。
$(document).on
changed_currency: ->
# omitted code
$(@).html("some html")
, '.currency-change'
这里没有什么特别的。它可以在不使用 Backbone.js 的页面上工作。但是,当在 Backbone.js 视图中时,这段代码根本不工作(事件没有被捕获)。所以我的问题是,我可以从我的 Backbone.js 视图内部触发自定义事件吗?
Backbone 网编码:
#omitted code
ui:
currency_change: '.currency_change'
onRender: () =>
#omitted code
@ui.currency_change.trigger('changed_currency')
1条答案
按热度按时间3bygqnnd1#
因为
onRender
函数是在render
函数的Marionette实现的末尾调用的,所以这是不起作用的。render
函数将视图的HTML呈现到一个不属于DOM的元素中。直到您实际将其插入DOM,挂在
document
上的事件处理程序才会捕获您触发的事件。如果你要利用Marionette的区域概念,那么你可以通过将
trigger
调用移到onShow
函数来解决这个问题。否则,你需要将trigger
调用移到你实际插入view.el
到DOM中的任何地方之后。