在Backbone.js中,我正在使用一个API,它将响应包装在meta
和data
哈希中。例如:
# GET /api/posts/1
meta: {
status: 200
},
data: {
id: 1
title: 'Hello World'
}
# GET /api/posts
meta: {
status: 200
},
data: [
{
id: 1
title: 'Hello World'
},
{
id: 2
title: 'Hi everyone!'
}
]
My Backbone.js Collection / Models具有以下解析函数:
# App.Models.Post
...
parse: function (response) {
this.meta = response.meta;
return response.data;
}
# App.Collections.Posts
...
parse: function (response) {
this.meta = response.meta;
return response.data;
}
但是,当我获取集合posts = new App.Collections.Posts(); posts.fetch()
时,post属性都是空的。即posts.at(0).get('title') = undefined
。
现在,当Model解析更改为:
时,这是固定的parse: function (response) {
return response;
}
但这意味着post.fetch()
被打破了。
有什么建议吗?
谢谢!
答案 0 :(得分:7)
我认为问题在于,模型parse
在通过模型fetch
与集合fetch
完成时传递的数据不一致。 console.log
建模parse
来证实这一点的论点。这是因为集合parse
返回的值只是一个对象数据数组,要将这些数据转换为模型,集合只会委托给模型的parse
方法。这可能会解决您的问题:
//App.Models.Post
parse: function (response) {
if (response.data) {
return response.data;
}
return response;
}