Почему backbone.js возвращает пустой массив при доступе к моделям?

У меня есть маршрутизатор, обращающийся к своей коллекции. Мой цикл for не выполнял итерации по моделям, поэтому я попробовал зарегистрировать коллекцию, чтобы посмотреть, что она возвращает. Оказалось, что когда я регистрирую коллекцию напрямую, я вижу все модели, как и ожидалось. Но если я пытаюсь записать в журнал атрибут models коллекции, я получаю пустой массив! Это не имеет смысла. Эти строки следуют непосредственно друг за другом. Я попробовал изменить порядок и получил тот же результат.

console.log(this.collection);
=> Shots
    _byCid:    Object
    _byId:     Object
    length:    15
    models:    Array[15]
    __proto__: Shots
    ...

console.log(this.collection.models);
=> []

console.log(this.collection.length);
=> 0

Почему это происходит?

Вот код в том виде, в котором он находится в маршрутизаторе, чтобы лучше понять, где этот код срабатывает:

# Routers
class Draft.Routers.Shots extends Backbone.Router
  routes:
    ''            : 'index'
    'shots/:id'   : 'show'

  initialize: ->
    @collection = new Draft.Collections.Shots()
    @collection.fetch()

  index: ->
    console.log @collection
    console.log @collection.models
7
задан mu is too short 20 February 2012 в 02:26
поделиться