gpt4 book ai didi

javascript - 主干关系延迟加载

转载 作者:行者123 更新时间:2023-11-30 10:47:31 26 4
gpt4 key购买 nike

我将 Backbone 与我的 RESTful JSON API 结合使用,以创建一个可处理帖子及其评论的应用程序。我一直在尝试让 Backbone Relational 正常工作,但遇到了延迟加载问题。

我加载了一个帖子列表,没有相关评论。单击列表中的帖子时,我会打开一个 View ,该 View 获取完整的帖子,包括评论,并呈现它。

我有 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 绑定(bind)到自身,从而更新集合。但是,我似乎无法找到一种可靠的方法来获取原始评论的 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 返回一个带有索引键(关联数组)的对象,而不是 native JSON 数组。

{
"id" : "1",
"title" : "post title",
"comments" : {
"2" : {
"id" : "2",
"description": "this should solve it"
},
"6" : {
"id" : "6",
"description": "this should solve it"
}
}
}

非常感谢!请提出任何问题,我确定我在某处含糊不清!

最佳答案

Backbone 关系模型不解析数组以外的集合,我的问题中的 JSON 不起作用。我更改了后端以在适当的数组中返回评论

{
"id" : "1",
"title" : "post title",
"comments" : [
{
"id" : "2",
"description": "this should solve it"
},
{
"id" : "6",
"description": "this should solve it"
}]
}
}

RelationalModel 不遵守 Backbone 提供的解析函数,以便在 JSON 继续之前解析它。通过后端返回“正确的”JSON,延迟加载无需任何额外代码即可工作。

关于javascript - 主干关系延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com