【问题标题】:Marionette Layout: trigger event on child view木偶布局:子视图上的触发事件
【发布时间】:2013-10-07 09:06:36
【问题描述】:

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

【问题讨论】:

    标签: events backbone.js marionette


    【解决方案1】:

    如果您使用 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。

    【讨论】:

    • 注意:木偶现在在 LayoutView 中有 'childEvents'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多