2013-10-07 74 views
3

我有一個佈局視圖,裏面有一個itemView。我在我的項目視圖中有一個事件觸發保存功能。在該保存功能中,我想觸發佈局捕獲的另一個事件。木偶佈局:在子視圖上觸發事件

所以在下面的代碼,在onClickSave modelSaveSuccess我想在父佈局觸發功能,我已經試過this.methodInParent(),但它不工作

childView

define(["marionette", "underscore", "text!app/templates/client/form.html", "app/models/client"], function(Marionette, _, Template, Model) { 
    "use strict" 
    return Backbone.Marionette.ItemView.extend({ 
    events: { 
     "submit #saveClient": "onClickSave" 
    }, 
    onClickSave: function(ev) { 
     ev.preventDefault() 
     return this.model.save({}, { 
     success: function() { 
      console.log('success - trigger ') 
     }, 
     error: function(request, error) { 
      console.log(error.responseText) 
     } 
     }) 
    } 
    }) 
}) 

回答

4

如果你使用Backbone.Marionette.application,一個不引入重耦合的好方法是使用Marionette的event aggregator作爲鏈接例子。

// in your view 
... 
success: function() { 
    app.vent.trigger('myview:modelsaved'); 
} 
... 

// in your layout initialize() 
... 
app.vent.on('myview:modelsaved', function(){ 
    console.log('model saved in itemView'); 
}); 
... 

如果你不使用Backbone.Marionette.Application你總是可以創建自己的Backbone.Wreqr.EventAggregator。

+0

非常感謝! 10char – azz0r

+0

注意:Marionette現在在LayoutView中有'childEvents' – backdesk