我将 Backbone 与我的 RESTful JSON API 一起使用,以创建一个适用于帖子及其评论的应用程序。我一直在尝试让 Backbone Relational 工作,但在延迟加载时遇到了问题。
我加载了一个帖子列表,没有相关评论。单击列表中的帖子时,我会打开一个视图,该视图会获取完整的帖子、包含的评论并呈现它。
我有 2 个 Backbone.RelationModels、帖子和评论。与评论的帖子关系设置如下:`
relations: [{
type: Backbone.HasMany,
key: 'comments',
relatedModel: 'Comment',
includeInJSON: true, // don't include it in the exporting json
collectionType: 'Comments'
}]
现在我面临的问题是,一旦我检索到我的列表,关系就被初始化了,它还不包含评论。我稍后通过它的 URI 获取模型来加载完整的数据。但是,关系似乎没有重新初始化,调用 Posts.get(1).get('comments') 返回一个空的 Comments 集合!
有谁知道我怎样才能最好地解决这个问题?数据在那里,只是评论的集合似乎没有更新。
编辑:我可以让 Post 模型将它的 change:comments 绑定到自身,从而更新集合。但是,我似乎找不到获取原始评论 JSON 的可靠方法,因为 this.get('comments') 返回 Comments 集合。
注意:在我的集合中,我使用以下代码解析 JSON 以使其与我的 API 一起使用:
parse: function(response) {
var response_array = [];
_.each(response, function(item) {
response_array.push(item);
});
return response_array;
}
这是因为我的 API 返回的 JSON 返回带有索引键(关联数组)的对象,而不是原生 JSON 数组。
{
"id" : "1",
"title" : "post title",
"comments" : {
"2" : {
"id" : "2",
"description": "this should solve it"
},
"6" : {
"id" : "6",
"description": "this should solve it"
}
}
}
非常感谢!请提出任何问题,我确定我在某个地方含糊不清!