我有一个布局视图,里面有一个itemView。我的项目视图中有一个触发保存功能的事件。在该保存功能中,我想触发布局捕获的另一个事件。
所以在下面的代码中,在onClickSave modelSaveSuccess中,我想在父布局中触发一个函数,我试过这个.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)
}
})
}
})
})
答案 0 :(得分: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。