【问题标题】:Backbone Collection Sync骨干收集同步
【发布时间】:2013-10-27 16:37:41
【问题描述】:

我正在尝试弄清楚如何使模型集合与我的服务器保持同步。目前,我的代码看起来像这样,但它显然有一些问题......

var myCollection = Backbone.Collection.extend({
    url: '/api/block',

    ...

    sync: function() {
        _.each(this.models, function(model) {
            model.sync('create', model);
        });
    }

});

目前,当我对我的集合调用 sync 时,它会遍历所有模型,并在每个模型上调用 sync。我很惊讶,首先这不是 Backbone.Collection.sync 方法的默认行为。还是我误解了“同步集合”应该做什么?

其次,我的model.sync('create', model); 行有点奇怪。为什么我在模型本身上调用方法时必须传入模型?另外,我手动调用“创建”,这显然是错误的。 'sync' 不应该知道它是应该创建还是更新?

而且,“同步”不应该足够智能,可以对已从我的收藏中删除的任何模型调用“删除”吗?

我猜我应该考虑在我的模型上自定义同步方法,但我仍然对我正在做的事情感到困惑,这是不寻常的,需要我自定义这些同步方法。

我觉得我错过了关于同步的一个相当重要的观点。

【问题讨论】:

  • Backbone 将没有 id 的模型视为新模型并调用 create(在保存方法上),否则调用 update(或补丁)。不,这不是 Backbone.Collection 的默认行为,我认为您误解了 Backbone 的 syncfetchsave 方法(然后阅读文档)。您的一些观点不是主干/客户端,而是服务器端。
  • 啊哈。好的,正如我所怀疑的那样,我忽略了一些相当基本的东西,那就是保存方法。我直接跳过同步。因此,据我所知, save 完成了我认为 sync 所做的工作。 Sync 用于处理来自服务器的保存请求的响应,以确保模型在保存后包含服务器上实际存在的属性。那么collection.sync 的意义何在? sthat什么时候被解雇?
  • 一次同步所有集合(如果你有 /blog/:id/tags 或类似的东西)。您的服务器必须支持嵌套关系。

标签: backbone.js collections sync


【解决方案1】:

为了记录,这个问题没有真正的答案,因为这是一个无效的问题!我误解了“同步”的用途。正如 KiT O 指出的那样,我现在正在使用 save。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2012-09-14
    • 2012-12-24
    • 2023-03-05
    相关资源
    最近更新 更多