Backbone返回我的JSON但没有获取值

时间:2013-11-05 22:07:32

标签: javascript json backbone.js

所以我的Backbone.js代码正在获取JSON ...我试图在fetch方法的成功回调中简单地控制模型,但我只是回到[r,r,r]而不是[object,对象,对象。拉出我的头发......

var Person = Backbone.Model.extend();
var PersonCollection = Backbone.Collection.extend({    
    model : Person,
    url: 'js/names.json',
    parse: function(data) {
        console.log(data); // <--- this will return what I am looking for
        return data;
    }
});
var PersonView = Backbone.View.extend({
    initialize: function(){
        var self = this;
        self.collection = new PersonCollection();
        self.collection.fetch({success: function() {
            console.log(self.collection.models); // <-- how do I get it here?
        }});
    }                                     
});                               
var newView = new PersonView();

JSON

[
    { "name": "Linda", "birthYear": 1947},
    { "name": "Kat", "birthYear": 1977},
    { "name": "Jen", "birthYear": 1989}
]

编辑:我在控制时获取相同的东西。我在控制台中使用自定义解析方法中的数据。请参阅上面代码中的评论

3 个答案:

答案 0 :(得分:0)

你感到困惑。该集合中的模型是Backbone模型,它们将包裹在您的记录中,而不是直接类似于您为集合提供的JSON。如果您需要,请考虑console.log(JSON.stringify(self.collection))

答案 1 :(得分:0)

查看here表示您的回调函数将通过项目,例如

users.fetch({
      success: function (users) {
        var template = _.template($('#user-list-template').html(), {users: users.models});
        that.$el.html(template);
      }
    })

所以也许对你的回调进行调整会有所帮助......

答案 2 :(得分:0)

我尝试了这段代码,添加到toJSON现在记录了解析函数记录的同一个对象。如果你没有获得相同的输出,那么代码的其他部分可能会出现问题。

var Person = Backbone.Model.extend();
var PersonCollection = Backbone.Collection.extend({
    model : Person,
    url: 'js/names.json',
    parse: function(data) {
        console.log(data); // <--- this return array of name objects
        return data;
    }
});
var PersonView = Backbone.View.extend({
    initialize: function(){
        var self = this;
        self.collection = new PersonCollection();
        self.collection.fetch({success: function() {
            console.log(self.collection.toJSON()); // <-- even this return array of name objects
        }});
    }
});
var newView = new PersonView();