在Backbone.js中,如何从URL获取数据?

时间:2012-01-11 20:12:17

标签: javascript backbone.js

我正在尝试从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]

所以,我很接近,但仍然遗漏了一些东西。

1 个答案:

答案 0 :(得分:1)

根据您的评论,我会说数据正确。

尝试在您的解析功能中添加console.log(response);

在我的主干模型中,parse()方法只返回第一个参数,在您的情况下它将是响应。我想你需要改变

return response.results;

return response;