Javascript-форум (https://javascript.ru/forum/)
-   Backbone.js (https://javascript.ru/forum/backbone/)
-   -   Проблема с Backbone-relational.js (https://javascript.ru/forum/backbone/46275-problema-s-backbone-relational-js.html)

Stray 04.04.2014 09:37

Проблема с Backbone-relational.js
 
Пишу клиентское приложение. Если просто то это таблица.
Приложение принимает данные о структуре таблицы, то есть о заголовках их
названиях и других свойствах столбца таблицы. И о данных таблицы, это её
строки и ячейки.

Структура
[
 {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: этот пост писал по памяти. код примерный. рабочий код здесь


Часовой пояс GMT +3, время: 14:12.