Подтвердить что ты не робот

Backbone.js: сложные представления, объединяющие несколько моделей

Пока все тесты и учебные пособия, которые я пытался, чтобы получить структуру в моей голове, показывают мне, что представление привязано к 1 модели.

говорит, что у меня есть небольшое приложение для хранения и управления контактными данными (адресная книга) У меня есть несколько пользователей, которые могут войти в систему и каждый из них имеет свою собственную коллекцию контактов.

пользовательский подробный вид будет привязан к пользовательской модели то же касается контактов

но скажу, что я хотел бы показать сетку, объединяющую эти два Ось X, показывающая все контакты в приложении Ось Y, показывающая всех пользователей,

как это работает? мне нужно создать новую модель для этого, связать с новым представлением?

вы получаете идею, ее просто теоретический пример, я не создаю это приложение, но его идея получить представление, объединяющее несколько моделей

4b9b3361

Ответ 1

В этом случае я бы рассмотрел динамическую модель с двумя вашими подмоделями. В обработчике маршрута вы можете сделать что-то вроде этого:

var model = new Backbone.Model();
model.set({contacts: new ContactsModel(), users: new UsersModel()});
var view = new GridView({model: model});

Конечно, нет ничего, что помешало бы вам пропустить в моделях отдельно:

var contacts = new ContactsModel();
var users = new UsersModel();
var view = new GridView({model: contacts, users: users})

Я по-прежнему предпочитаю композитный подход первого, потому что он не сближает то, что такое модель.

Ответ 2

Вы также можете рассмотреть возможность слияния обеих моделей, если вы уверены, что они не используют одни и те же параметры.

var modelA = new myModel({ color: "blue" });
var modelB = new otherModel({ age: 35 });

var superModel = new Backbone.Model();
superModel.set(modelA);
superModel.set(modelB);

console.log("color:", superModel.get("color"));
console.log("age:", superModel.get("age"));

взгляните на Backbone.Model.extend(), а также