Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2015, 11:42
Новичок на форуме
Отправить личное сообщение для _sky_ Посмотреть профиль Найти все сообщения от _sky_
 
Регистрация: 24.01.2015
Сообщений: 5

После fetch на выходе Array, а не Collection
Добрый день.

Приложение на Marionettejs + backbone-relational, построил связь между моделями, гружу по fetch вот такой json:

{
  "id": 7,
  "title": "Анкета 1",
  "items": [
    {
      "id": 6,
      "order": 1,
      "title": "пунктик намба уан",
      "html": "хтмл 1",
      "sample_html": "пример хтмл 1",
      "questions": [
        {
          "id": 1
        },
        {
          "id": 2
        },
        {
          "id": 3
        }
      ]
    }
  ]
}


Проблема в том, что на выходе items у меня создаются как объект Collection, а questions - обычным массивом. Разумеется, у меня возникают проблемы с тем, чтобы все это корректно отображать через марионетку.
Во вьюшках я просто пытаюсь заполнить коллекцию вьюшки через получение атрибута модели, без инициализации коллекции:
// Я делаю так
this.collection = this.model.get( "questions" );

// Если делать так, что, разумеется, все работает, но дерево модели не обновляется автоматом
// this.collection = new questions_collection( this.model.get( "questions" ) );


Вопрос: как-то можно жестко задавать, что при fetch все массивы интерпретировать как Backbonoe.Collection? Разумеется, без ручного парсинга.
Ответить с цитированием
  #2 (permalink)  
Старый 27.01.2015, 20:51
Аспирант
Отправить личное сообщение для biperch Посмотреть профиль Найти все сообщения от biperch
 
Регистрация: 10.07.2013
Сообщений: 34

Коллекция, это по сути контейнер в котором много одинаковых моделей.

Мне непонятно, выше приведенный json это единичный item или это по вашему "коллекция"?
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2015, 18:22
Интересующийся
Отправить личное сообщение для Aries Посмотреть профиль Найти все сообщения от Aries
 
Регистрация: 02.02.2013
Сообщений: 26

Переопредели у класса модели метод parse

parse: function(attrs, options) {
    if (_.isArray(attrs.items)) {
        attrs.items = new YourClassCollection(attrs.items);
    }

    return attrs;
}


Если вложенность то допиши и таки обработка и для вложенных моделей.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После new RegExp null, а без new RegExp array kostyanet Общие вопросы Javascript 19 25.10.2014 12:53
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 21:43