木偶布局:在儿童视图上触发事件

时间:2013-10-07 09:06:36

标签: events backbone.js marionette

我有一个布局视图,里面有一个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)
        }
      })
    }
  })
})

1 个答案:

答案 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。