Пишу клиентское приложение. Если просто то это таблица.
Приложение принимает данные о структуре таблицы, то есть о заголовках их
названиях и других свойствах столбца таблицы.
И о данных таблицы, это её
строки и ячейки.
Структура
[
{name: 'id', title: 'ID'},
{name: 'name', title: 'Name'},
{name: 'age', title: 'Age'}
]
Данные
[
{id: 1, action: '/user1', cells: [{column: 'id', value: 1},{column: 'name', value: 'Vasya'},{column: 'age', value: 21}]},
{id: 2, action: '/user2', cells: [{column: 'id', value: 2},{column: 'name', value: 'Nikolay'},{column: 'age', value: 24}]}
]
Из этих данных должна получиться следующая объектная модель:
Колонка
var Column = Backbone.RelationalModel.extend({
idAttribute: 'name',
defaults: {
name: null,
title: null
}
});
Строка
var Row = Backbone.RelationalModel.extend({
defaults: {
id: null,
action: null
}
});
Ячейка
Backbone.RelationalModel.extend({
relationals: [
{
type: Backbone.HasOne,
key: 'row',
relationModel: Row,
reverseRelation: {
key: 'cells'
}
},
{
type: Backbone.HasOne,
key: 'column',
relationModel: Column
}
],
defaults: {
column: null,
value: null
}
});
Идея состоит в том что бы у ячейки была ссылка на свой столбец и свою строку.
Со столбцом проблем нет. Ссылка проставляется нормально. У строки тоже самое, есть
ссылка на ячейки в виде коллекции. Но вот не получается заставить ячейку видеть свою
строку, при чем только в том случае когда данные берутся с сервера.
То есть если данные берутся из статического объекта js
var rows = new Rows(Данные)
все нормально. У ячейки есть атрибут 'row' в котором находится объект строки
Но если данные берутся с сервера
var rows = new Rows();
rows.fetch()
атрибут 'row' так же присутствует но значение его 'null'
Кто нибудь знает в чем тут может быть дело?
PS: этот пост писал по памяти. код примерный. рабочий код
здесь