Вытащить коллекцию с помощью backbone.js

Я пытаюсь получить коллекцию из атрибута url, и у меня возникли некоторые проблемы. Кажется, fetch() возвращается успешно, но тогда я не могу получить доступ к моделям в моей коллекции с помощью get(). Я использую BBB и требуют JS для разработки своих модулей

var rooms = new Rooms.Collection(); // calls the rooms module
  rooms.fetch({success: function(){
      console.log(rooms.get(1)); // should output the first model
});

Вот мой код коллекции в модуле комнат:

Rooms.Collection = Backbone.Collection.extend({
    model: Rooms.Model,
    url: 'http://localhost:8888/projects/meeting-room/app/data/rooms.json'
});

Если я вывожу номера, все получается хорошо. Но когда я пытаюсь найти конкретную модель, я получаю сообщение об ошибке.

[{
    "id": 12345,
    "name": "Ford",
    "occupied": false
},
{
    "id": 23458,
    "name": "Chevy",
    "occupied": false
},
{
    "id": 83565,
    "name": "Honda",
    "occupied": false
}]

1 ответ

Решение

collection.get Метод ищет модель по идентификатору. Если вы хотите найти модель по позиции, используйте collection.at вместо.

Также обратите внимание, что индексы массива в JavaScript 0 на основе, поэтому первая модель может быть найдена с:

var model = collection.at(0); 

Для удобства коллекции Backbone также реализуют некоторые методы массива и коллекции подчеркивания, включая first, Это означает, что вы также можете найти первую модель с:

var model = collection.first();
Другие вопросы по тегам