骨干集合导出问题

时间:2013-04-08 20:41:39

标签: backbone.js backbone-events

我有一组用户(模型用户) model有一个布尔值:isExport 我有一个点击按钮应该发布到服务器的所有用户isExport = true 任何人都可以为这个问题提出合适的解决方案吗?

我知道可以将集合包装为模型并覆盖toJSON函数 但到目前为止无法管理它(有人可以给出代码示例吗?)

App.User = Backbone.Model.extend({ defaults: {isExport: false}...});
App.Users = Backbone.Collections.extend({model: App.User...}); 

谢谢! 罗伊

3 个答案:

答案 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();
}
});

我认为这是问题的最佳解决方案