我正在尝试使用Backbone.js Collection方法从数据库中获取数据:fetch()。
jsfiddle示例是here。
返回的对象长度为零,这意味着我没有得到任何结果。我可以很容易地使用jquery ajax获取json,而Backbone.sync显然也使用.ajax方法。我可能知道出了什么问题吗?
答案 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();