在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!'
}
]
Run Code Online (Sandbox Code Playgroud)
我的Backbone.js集合/模型具有以下解析函数:
# 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;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我获取集合时posts = new App.Collections.Posts(); posts.fetch(),post属性都是空的.即posts.at(0).get('title') = undefined.
现在,当Model解析更改为:
parse: function (response) {
return response;
}
Run Code Online (Sandbox Code Playgroud)
但这意味着它post.fetch()被打破了.有什么建议?
谢谢!
我认为问题是你的模型parse在通过模型fetch和集合完成时会传递到它的不一致数据fetch.console.log模型的论据来parse证实这一点.这是因为集合返回的值parse只是一个对象数据数组,为了将它们转换为模型,集合只是委托给模型的parse方法.这可能会解决您的问题:
//App.Models.Post
parse: function (response) {
if (response.data) {
return response.data;
}
return response;
}
Run Code Online (Sandbox Code Playgroud)
供参考:https://github.com/documentcloud/backbone/pull/773
| 归档时间: |
|
| 查看次数: |
3760 次 |
| 最近记录: |