2013-10-07 95 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