Две модели в опоре Посмотреть
Я пытался отобразить две модели в одном представлении. Вот мой код:
На маршрутизаторе вы можете получить модели о нас и компании и добавить их в AboutusView:
var self=this;
var aboutus=new Aboutus({id:1});
var company= new Company({id:1});
aboutus.fetch();
company.fetch();
var model = new Backbone.Model();
model.set({aboutus: aboutus, company: company});
var aboutusView=new AboutusView({model:aboutus,model2:company});
aboutusView.render();
self.changePage(aboutusView);
=======================
For Aboutus View Part:
var AboutusView = Backbone.View.extend({
template: _.template(aboutusViewTemplate),
initialize: function () {
_.bindAll(this, 'render');
},
render: function(){
console.log(this.model);
console.log(this.options.model2);
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
return AboutusView;
============================
In console log of this.model (aboutus) is:
===========================
child {attributes: Object, _escapedAttributes: Object, cid: "c0", changed: Object, _silent: Object…}
_changing: false
_escapedAttributes: Object
_pending: Object
_previousAttributes: Object
_silent: Object
attributes: Object
aboutusId: 1
description: "testing"
id: 1
imageExtension: ""
title: "ABOUT US"
__proto__: Object
changed: Object
cid: "c0"
id: 1
__proto__: ctor
Поэтому вопрос в том, что я хочу отобразить атрибуты aboutus, такие как aboutusId, описание в шаблоне. Как я могу это сделать?
2 ответа
Вместо отправки this.model.toJSON() в шаблон, отправьте оба набора данных (модели). Помните, что вы можете отправить любой тип объекта JSON в шаблон. Вы могли бы сделать что-то вроде:
var somedata = {
aboutus: this.model.toJSON(),
company: this.options.model2.toJSON() //or 'this.model2.toJSON()', not completely sure where this model is accessible in the view.
}
this.$el.html(this.template(somedata));
Затем в вашем шаблоне вы можете получить доступ к каждой модели по <%= aboutus.description %>
или же <%=company.id %>
(например).
var model = new Backbone.Model();
model.set({aboutus: aboutus, company: company});
var aboutusView=new AboutusView({model:aboutus,model2:company});
В этих строках выше вы создаете переменную model
но никогда не добавляйте вложения model
к AboutusView
, Не хотите ли вы сделать:
var aboutusView=new AboutusView({model:model});
При этом теперь у вас есть модель под названием model
это имеет атрибуты aboutus
а также company
, который вы можете получить в своем шаблоне, передав model.toJSON()
в вашем шаблоне.
Если Aboutus и Company также являются моделями (я полагаю, что они есть), вы можете получить доступ к их атрибутам в своем представлении:
this.model.get('aboutus').get('id')