无法使用Backbone.js Collection从Twitter RESTful API获取数据

时间:2011-06-03 08:40:25

标签: collections backbone.js

我正在尝试使用Backbone.js Collection方法从数据库中获取数据:fetch()。

jsfiddle示例是here

返回的对象长度为零,这意味着我没有得到任何结果。我可以很容易地使用jquery ajax获取json,而Backbone.sync显然也使用.ajax方法。我可能知道出了什么问题吗?

1 个答案:

答案 0 :(得分:14)

你遇到了两个问题。

第一个是Twitter的结果(你想要转变成骨干模型)属于“结果”属性。要使用此数据,您需要覆盖集合中的parse方法。这是主干文档中使用的具体示例:

http://documentcloud.github.com/backbone/#Collection-parse

第二个问题是fetch()方法是异步的,所以当你在集合上获得'length'时,它会在响应从twitter返回之前发生,所以它仍然是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();