Nic*_*ang 7 model-view-controller jquery backbone.js
我有一个类别的层次结构.我使用jquery库来构建层次结构,以便按照用户想要的方式混淆.然后他们点击保存.因此,要保存的初始层次结构和层次结构可能完全不同.
层次结构表示为集合,我使用parentIds使用ol和li标记构建树.
当用户单击"保存"时,我需要使用新的parentId更新集合中的所有项目,并将每个项目与服务器同步.
我想知道是否有人对如何继续这里有任何建议.我在Backbone.sync的文档中看到,'' setTimeout
用于批量快速更新到单个请求.''所以,如果我理解正确,我会将每个调用排队到Backbone.sync然后使用setTimeout几秒后将我的队列发送到服务器?
另外,如果我重写Backbone.sync,我是否仍然需要一个'save'方法,用于解析响应的json的集合(服务器响应必须发回一个对象列表),然后调用模型.set集合中的每个项目?有人有任何示例代码吗?
谢谢!
Nic*_*ang 21
我最终将一个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);
}
});
Run Code Online (Sandbox Code Playgroud)
在后端(我正在使用PHP)我只是获取数据并将其保存到我的数据库并返回JSON格式的新集合.
我不确定我完全理解上下文.它是这样的:你有一个包含所有类别的集合,并使用属性保持层次结构parentId
.用户更改层次结构,然后您想要保存层次结构(隐式地,保存现在包含不同的集合parentId
).
如果这是正确的,我会做的是:
{id: parentId}
并使用此数据更新所有类别.Backbone.sync('update', categories_collection, {data: a_hash_of_{id:parent_id}, success: your_success_callback)
.如果您url
为类别指定,这应该在没有任何其他覆盖的情况下工作,并且在成功回调中,您可以使用新数据重置集合.这不是完整的REST,但它的优点是无论您拥有多少类别,都只会触发一个更新请求.
归档时间: |
|
查看次数: |
14834 次 |
最近记录: |