Backbone.js-自定义JQuery事件

Backbone.js-自定义JQuery事件,jquery,backbone.js,marionette,jquery-events,backbone-events,Jquery,Backbone.js,Marionette,Jquery Events,Backbone Events,我对主干(木偶)和jQuery自定义DOM事件有问题 我有一个自定义插件,它在文档中触发changed\u currency事件时更新元素的html内容 $(document).on changed_currency: -> # omitted code $(@).html("some html") , '.currency-change' 这里没什么特别的。它在不使用主干的页面上工作。但是,在主干视图中,此代码根本不起作用(未捕获事件)。所以我的

我对主干(木偶)和jQuery自定义DOM事件有问题

我有一个自定义插件,它在文档中触发
changed\u currency
事件时更新元素的html内容

$(document).on
  changed_currency: ->
    # omitted code
    $(@).html("some html")
, '.currency-change'
这里没什么特别的。它在不使用主干的页面上工作。但是,在主干视图中,此代码根本不起作用(未捕获事件)。所以我的问题是,我可以从主干视图内部触发自定义事件吗

主干代码:

#omitted code
ui: 
   currency_change: '.currency_change'

onRender: () =>
  #omitted code
  @ui.currency_change.trigger('changed_currency')

这不起作用,因为在
render
函数的木偶实现结束时调用了
onRender
函数。
render
函数将视图的HTML呈现为不属于DOM的元素

直到您实际将其插入DOM,挂起在
文档上的事件处理程序才会捕获您触发的事件。

如果您正在利用木偶的区域概念,则可以通过将
触发器
调用移动到
onShow
函数来解决问题。否则,您需要将
触发器
调用移动到实际将
view.el
插入DOM的任何位置之后

// In view
onShow : function () {
  this.ui.currency_change.trigger('changed_currency');
}

// View instantiation code
var view = new SomeView();
App.someRegion.show(view);

工作得很有魅力。非常感谢:)