从子视图冒泡的事件无法按预期工作

时间:2012-06-12 08:40:14

标签: marionette

我想使用集合视图的冒泡行为,但它似乎不起作用。

一些上下文:我显示一个模态AddPartFromPurchase,显示一个填充了collectionView的表。这很有效。

当用户点击一行时,itemview会触发purchase:chosen事件,因此根据文档,我希望集合视图能够接收itemview:purchase:chosen事件,但不会触发此类事件: AddPartFromPurchasePurchases。 :(

以下是示例代码。

AddPartFromPurchase = Backbone.Marionette.ItemView.extend
  template: 'pages/vehicles/modifications/add_part_from_purchase'


  initialize: (attributes)->
    @purchases = attributes.purchases


  onRender: ->
    view = new Purchases(el: @$('tbody'), collection: @purchases)
    @bindTo(view, 'all', @foo) 
    view.render()


  foo: (event, foo, bar, baz)->
    console.log(event, foo, bar, baz)



Purchase = Backbone.Marionette.ItemView.extend
  template: 'pages/vehicles/modifications/purchase'
  tagName:  'tr'

  events:
    'click' : 'selectPurchase'


  selectPurchase: ->
    @trigger('purchase:chosen', @model)
    false


  serializeData: ->
    purchase: @model
    part:     @model.get('part')



Purchases = Backbone.Marionette.CollectionView.extend
  itemView: Purchase

  initialize: ->
    @bindTo(@, 'all', @foo)


  foo: (event, foo, bar, baz)->
    console.log(event, foo, bar, baz)


也许我做错了,我觉得在onRender中定义听众感觉很糟糕,但是当我使用el时,我无法在initialize中做到这一点。< / p>

我该如何处理?

1 个答案:

答案 0 :(得分:1)

基于评论流的答案:确保您在引入此功能时使用的是v0.7.6或更高版本。