将模型传递给LayoutView Backbone.Marionette

时间:2015-03-12 18:56:34

标签: javascript backbone.js view model marionette

我正在尝试将模型传递给 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未定义”,因为模型未正确映射。

我应该如何处理?

1 个答案:

答案 0 :(得分:0)

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

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