3

我有一个布局视图,里面有一个 itemView。我的项目视图中有一个触发保存功能的事件。在该保存功能中,我想触发布局捕获的另一个事件。

所以在下面的代码中,在 onClickSave modelSaveSuccess 我想在父布局中触发一个函数,我试过 this.methodInParent() 但它不起作用

子视图

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

1 回答 1

4

如果您使用 Backbone.Marionette.application,那么在不引入重耦合的情况下,一个好方法是使用 Marionette 的事件聚合器,如链接示例中所示。

// 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。

于 2013-10-07T13:46:13.177 回答