所以我的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}
]
编辑:我在控制时获取相同的东西。我在控制台中使用自定义解析方法中的数据。请参阅上面代码中的评论
答案 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();