我正在尝试从URL中获取推文,该URL以以下形式返回数据:
[
{"user":"someuser1","tweet":"this is a #tweet","date":"2011-09 02"},
{"user":"someuser2","tweet":"and this is a #tweet","date":"2011-09 02"},
{"user":"someuser3","tweet":"and this is another #tweet","date":"2011-09"}
]
我有一个模特,
window.Tweet = Backbone.Model.extend({
initialize: function(){
this.bind('change',function(){
})
},
defaults: {
"user": "some-other-user",
"tweet": "this is some tweet",
"date" : "2012-01-06"
}
});
我有一个集合,
window.Tweets = Backbone.Collection.extend(null,{
url: '/tweets/',
model: Tweet,
parse: function(response) {
return response.results;
}
});
我有一个观点
window.TweetsView = Backbone.View.extend({
el: $('#content-top'),
initialize: function(){
this.model.bind('change',this.render,this);
},
render: function() {
var TweetsCollection = Backbone.Collection.extend({
model : Tweet,
url: '/tweets/',
parse: function(response) {
return response.results;
}
});
var tweets = new TweetsCollection;
tweets.fetch();
console.log(tweets.toJSON());
} ...
两个
alert(tweets.at(0));
和
alert(tweets.length)
给我“未定义”。我错过了什么?
修改
如果我记录了响应(在视图中),我确实得到了回复:
[object Object],[object Object],[object Object]
所以,我很接近,但仍然遗漏了一些东西。
答案 0 :(得分:1)
根据您的评论,我会说数据正确。
尝试在您的解析功能中添加console.log(response);
。
在我的主干模型中,parse()方法只返回第一个参数,在您的情况下它将是响应。我想你需要改变
return response.results;
到
return response;