将模型传递给 LayoutView Backbone.Marionette

Passing a model to a LayoutView Backbone.Marionette

我正在尝试将 model 传递给 LayoutView,以便可以在视图中编辑特定的模型属性。

在我的 ItemView 中,我有一个事件可以抓取所选模型并将其分配给我的全局应用程序-

var ItemView = Backbone.Marionette.ItemView.extend({

    template: _.template(ItemTemplate),
    tagName: "tr",
    attributes: function(){
     return {
      "id": this.model.get('id'),
      "class": "tr"
    };
  },
      events: {
        "click #edit" : "edit"
      },

      edit: function() {
        App.EditModel = this.model;
        console.log(App.EditModel);  // <-- prints out the model successfully
        App.trigger('edit');
      }

  })

然后,我在我的编辑视图中使用 App.EditModel 传递给我的模板 -

var Layout = Backbone.Marionette.LayoutView.extend({

    model: App.EditModel,
    template : _.template(EditTemplate),

    regions : {
   "HomeRegion": "#home"
    }
 });

 return Layout;
});

在浏览器中我得到- "Uncaught ReferenceError: firstName is not defined" 因为模型没有被正确映射。

我该如何处理?

当您第一次看到您的布局代码时,扩展函数会运行并接受您的所有选项,此时我想 App.EditModel 尚不存在,因此模型存储为 undefined

如果您想将模型传递给您的 LayoutView,那么您应该在实例化它时执行此操作,即 new Layout({model: this.model});