如何使用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