我将 Backbone 与 Marionette 和 backbone-relational 结合使用。
假设我有一个动物园,里面有 Backbone.Collection
动物。
我在数据库中存储了一只动物(id 为 1)。
现在我将第二只动物添加到 Backbone.Collection 并调用 zoo.save({}, {wait: true})
。
作为响应,我的后端服务器返回了两只动物(旧的 id 为 1 的,新的 id 为 2 的)。
行得通。
问题:保存后 Backbone.Collection
包含三个模型。
- id 为 1 的动物
- 没有 id 的动物(只有 cid)
- 服务器返回的 id 为 2 的新动物
相反,我只想要两个模型:
- id 为 1 的动物
- id 为 2 的动物
我如何告诉 Backbone 将服务器 ID 设置为已经存在的动物,而不是向集合中添加新模型?
附加信息:
我的 Zoo 模型扩展了 Backbone.RelationalModel
,关系定义如下(类似于 http://backbonerelational.org/#RelationalModel-relations 中的示例):
relations: [
type: Backbone.HasMany
relatedModel: 'Animal'
collectionType: 'AnimalCollection'
key: 'animals'
]
这就是为什么保存动物园也会更新收藏。
最佳答案
我通常通过 Ajax 发布我的新模型(因为在客户端创建的模型在服务器端创建之前没有任何服务器数据支持),并在我的 Ajax 函数的成功回调中添加从返回的模型 JSON服务器到集合,从而确保您的数据由后端驱动,并且您在客户端没有挂起的数据/模型,这些数据/模型在重新加载时将不再存在。
关于javascript - Backbone.Collection 保存后元素过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167842/