Две модели в опоре Посмотреть

Я пытался отобразить две модели в одном представлении. Вот мой код:

На маршрутизаторе вы можете получить модели о нас и компании и добавить их в 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')
Другие вопросы по тегам