我有一个类别的层次结构.我为层次结构使用了一个
jquery库,以便按照用户想要的方式混淆.然后他们点击保存.因此,要保存的初始层次结构和层次结构可能完全不同.
层次结构表示为集合,我使用parentIds使用ol和li标记构建树.
当用户单击“保存”时,我需要使用新的parentId更新集合中的所有项目,并将每个项目与服务器同步.
我想知道是否有人对如何继续这里有任何建议.我在Backbone.sync的文档中看到过”使用setTimeout批量快速更新到单个请求中.”所以,如果我理解正确,我会将每个调用排队到Backbone.sync然后使用几秒钟后,setTimeout将我的队列发送到服务器?
另外,如果我重写Backbone.sync,我是否仍然需要一个’save’方法,用于解析响应的json的集合(服务器响应必须发回一个对象列表),然后调用模型.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,但它的优点是无论您拥有多少类别,都只会触发一个更新请求.