如何使用backbone.js保存集合

我有一个分类层次结构。 我使用层次结构的jQuery库来使用户想要的所有混乱。 然后他们点击保存。 因此,要保存的初始层次和层次可能完全不同。

层次结构被表示为一个集合,我使用parentIds来使用ol和li标签来构建树。

当用户点击保存时,我需要使用他们的新parentId更新集合中的所有项目,并将每个项目与服务器进行同步。

我想知道如果任何人有任何建议如何在这里进行。 我在Backbone.sync的文档中看到,''使用setTimeout将快速更新批量处理为单个请求。''所以,如果我理解正确,我会将每个调用排队到Backbone.sync,然后使用setTimeout在几秒钟后将我的队列发送到服务器?

另外,如果我重写Backbone.sync,那么我还是不需要一个'save'方法来存放集合,它将解析响应的json(服务器响应必须发送一个对象列表),然后调用model .set在集合中的每个项目上? 有没有人有任何示例代码?

谢谢!


我不确定我完全理解上下文。 这是这样的:你有一个包含所有类别的集合,并使用属性parentId保持层次结构。 用户更改层次结构,然后想要保存层次结构(隐式地保存现在包含不同parentId的集合)。

如果这是正确的,我会做的是:

  • 做一个接受{id: parentId}散列的PUT / categories动作,并用这个数据更新所有的类别。
  • 保存时,我会调用Backbone.sync('update', categories_collection, {data: a_hash_of_{id:parent_id}, success: your_success_callback) 。 这应该没有任何其他覆盖,如果你指定你的类别的url ,并在回调成功,你可以简单地重置集合与新的数据。
  • 这不是完整的REST,但它具有仅触发一个更新请求的优点,无论您拥有多少类别。


    我最终将一个updateAll方法放入我的集合模型中。 这工作像一个梦想:

    Domain.PageList = Backbone.Collection.extend({  
      model: Domain.Page,   
      url: '_domainController/PageListController',
      comparator: function(page) {
        return page.get('ordering');
      },
    
      updateAll: function() {
        var collection = this;
        options = {
          success: function(model, resp, xhr) {
            collection.reset(model);
          }
        };
        return Backbone.sync('update', this, options);
      }
    });
    

    在后端(我使用PHP)我只是获取数据并将其保存到我的数据库并返回JSON格式的新集合。

    链接地址: http://www.djcxy.com/p/67129.html

    上一篇: How to save a Collection with backbone.js

    下一篇: Best practice for saving an entire collection?