Выборка магистрали возвращает 5 моделей, но когда я визуализирую представление моей коллекции, существует только 1 модель?

#javascript #backbone.js

#javascript #backbone.js

Вопрос:

Я действительно не уверен, что я делаю неправильно, но когда я создаю fetch и регистрирую ответ, я вижу 5 объектов, но когда я выхожу из данных в представлении, где я прослушиваю событие синхронизации коллекции, из системы выходит только 1 объект? Мои данные хранятся в global dataStore object as dataStore.videos , кто-нибудь объяснит, где я могу ошибаться?

VideoSearchCollection.js

 getVideos: function(searchTerm) {

            this.searchTerm = searchTerm;

            this.fetch();
        },
parse: function(response) {

            console.log('this is response.items: ', response.items); // logs 5

            return response.items;
        }
  

SearchResultsView.js

 initialize: function() {

            // listens to a change in the collection by the sync event and calls the render method
            this.listenTo(dataStore.videos, 'sync', this.render);

            console.log('This collection should look like this: ', dataStore.videos);
        },


        render: function() {

            console.log('inside render', dataStore.videos); // logs 1??

            var self = this,
                gridFragment = this.createItems();

                this.$el.html(gridFragment);

            return this;
        },
  

Мои данные
введите описание изображения здесь

Ответ №1:

Идентификатор имеет значение. Похоже, что ваш ответ сервера возвращает элементы, у которых нет идентификатора, поэтому Backbone объединяет их все в один.

Неправильный ответ сервера:

 {"name","dan 1"}
{"name","dan 2"}
  

Правильный ответ сервера:

 {"name","dan 1", id: 1}
{"name","dan 2", id: 2}
  

Комментарии:

1. о да, когда я смотрю на свои данные, там нет фактических идентификаторов, я прикрепил скриншот своих данных в сообщении выше. что я могу с этим поделать?

2. Как я уже говорил, идентификатор имеет значение. В вашем случае id — это объект, Backbone ожидает, что ID будет строкой или уникальным числом. Можете ли вы изменить код сервера, чтобы возвращать VideoID в качестве идентификатора? если нет, в функции синтаксического анализа для вашей модели map id = как VideoID, что-то вроде этого.

3. это данные, возвращающиеся из youtube api, поэтому я не могу их обновить, я попробую проанализировать модель, спасибо!