Вы столкнулись с двумя проблемами.
Первая - это то, что результаты твиттера (то, что вы хотите превратить в магистральные модели) находятся в свойстве «результатов».Чтобы использовать эти данные, вам необходимо переопределить метод parse в коллекции.Это конкретный пример, используемый в документации по магистрали:
http://documentcloud.github.com/backbone/#Collection-parse
Вторая проблема заключается в том, что метод fetch () является асинхронным, поэтому при получении значения «length»в коллекции это происходит до того, как ответ возвращается из твиттера, поэтому его длина по-прежнему равна 0.
Вам нужно настроить обработчик событий, чтобы прослушивать результаты «fetch» и затем выводить длину:
var Tweet = Backbone.Model.extend();
var Tweets = Backbone.Collection.extend({
model: Tweet,
url: 'http://search.twitter.com/search.json?q=obama&callback=?',
parse: function(response) {
return response.results;
}
});
var tweets = new Tweets();
tweets.bind('reset', function(collection) {
alert(collection.length);
});
tweets.fetch();