我有一组用户(模型用户) model有一个布尔值:isExport 我有一个点击按钮应该发布到服务器的所有用户isExport = true 任何人都可以为这个问题提出合适的解决方案吗?
我知道可以将集合包装为模型并覆盖toJSON函数 但到目前为止无法管理它(有人可以给出代码示例吗?)
App.User = Backbone.Model.extend({ defaults: {isExport: false}...});
App.Users = Backbone.Collections.extend({model: App.User...});
谢谢! 罗伊
答案 0 :(得分:1)
默认情况下,Backbone集合没有对服务器进行任何写入操作,因此您需要向Collection子类添加新方法,例如doExport
,使用.where
获取包含isExport=true
及其toJSON()
的模型以获取一系列对象,然后您可以使用Backbone.sync
或$.post
将其发送到服务器。
答案 1 :(得分:0)
Backbone附带RESTful支持。 因此,如果您为每个集合指定一个指向集合休息服务的URL,则使用一些函数(创建,保存),您可以处理服务器请求。
App.Models.User = Backbone.Model.extend();
App.Collections.Users = Backbone.Collection.extend({
url: 'users',
model: App.Models.User
});
所以,这样,你可以:
var users = new App.Collections.Users();
users.fetch(); // This will call yoursite.com/users
// Expecting a json request
然后你可以:
users.create({ name: 'John', isExport: true });
这将向服务器发送一个帖子请求,以便创建一个新记录。 你可以检查服务器端是否有你想要的标志。
答案 2 :(得分:0)
App.Views.ExportAll = Backbone.View.extend({
el: '#exportAll',
events: {
'click': 'exportAll'
},
exportAll: function(e){
e.preventDefault();
console.log('exporting all');
console.log(this.collection.toJSON());
var exportModel = new App.Models.Export;
exportModel.set("data", this.collection.toJSON());
console.log(exportModel.toJSON());
exportModel.save();
}
});
我认为这是问题的最佳解决方案