【问题标题】:Backbone collection export issues骨干集合导出问题
【发布时间】:2013-04-08 20:41:39
【问题描述】:

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

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

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

谢谢! 罗伊

【问题讨论】:

    标签: backbone.js backbone-events


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Backbone 带有 RESTful 支持。 所以,如果你给每个集合一个指向集合 rest 服务的 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 });
      

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

      【讨论】:

        【解决方案3】:
        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();
        }
        });
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多