0

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

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

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

谢谢!罗伊

4

3 回答 3

1

默认情况下,骨干集合对服务器没有任何写入操作,因此您需要向您的 Collection 子类添加一个新方法,例如doExport,用于.where获取模型isExport=true及其toJSON()获取对象数组,然后您可以使用Backbone.syncor发送到服务器$.post

于 2013-04-08T20:50:18.920 回答
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 });

这将向服务器发送一个发布请求,以创建新记录。你可以在服务器端检查它是否有你想要的标志。

于 2013-04-09T00:39:26.097 回答
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();
}
});

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

于 2013-04-09T09:23:48.897 回答