【问题标题】:Backbone.Collection has too many elements after saveBackbone.Collection 保存后元素过多
【发布时间】:2015-07-01 17:22:06
【问题描述】:

我将 Backbone 与 Marionette 和骨干关系一起使用。

假设我有一个动物园,里面有 Backbone.Collection 的动物。 我在数据库中存储了一只动物(id 为 1)。 现在我将第二只动物添加到 Backbone.Collection 并调用 zoo.save({}, {wait: true})。 作为响应,我的后端服务器返回了两种动物(旧的 id 为 1,新的 id 为 2)。 这行得通。

问题:保存后Backbone.Collection包含三个模型

  1. id 为 1 的动物
  2. 一种没有 id 的动物(只是一个 cid)
  3. 服务器返回的 id 为 2 的新动物

我只想要两个模型

  1. id 为 1 的动物
  2. id 为 2 的动物

我如何告诉 Backbone 将服务器 ID 设置为已经存在的动物而不是向集合中添加新模型?

其他信息:

我的 Zoo 模型扩展了 Backbone.RelationalModel,其关系定义如下(类似于 http://backbonerelational.org/#RelationalModel-relations 的示例):

relations: [
    type:           Backbone.HasMany
    relatedModel:   'Animal'
    collectionType: 'AnimalCollection'
    key:            'animals'
]

这就是为什么保存动物园也会更新收藏。

【问题讨论】:

  • Backbone.Collection.save 方法吗?
  • 感谢您的提问。我添加了一些关于使用骨干关系定义的关系的信息。

标签: javascript backbone.js marionette backbone-relational


【解决方案1】:

我通常通过 Ajax 发布我的新模型(因为在客户端创建的模型在服务器端创建之前没有任何服务器数据支持),并在我的 Ajax 函数的成功回调中添加从返回的模型 JSON服务器到集合,从而确保您的数据由后端驱动,并且您没有在客户端挂起的数据/模型在重新加载时将不再存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多