【问题标题】:Adding a PATCH method to Backbone collections将 PATCH 方法添加到 Backbone 集合
【发布时间】:2014-07-01 02:41:54
【问题描述】:

我有一个使用 Django/Tastypie 后端和 Backbone/Marionette 前端的 Web 应用程序。我想使用 Tastypie 的 bulk operations 通过我的 API 使用对列表端点的 PATCH 请求创建多个对象。

我的理解是 Backbone 不支持这个。将其添加到 Backbone 的最佳方法是什么?我假设我需要向 Backbone 的集合对象添加一个保存方法并扩展 Backbone 同步方法。

【问题讨论】:

    标签: backbone.js tastypie


    【解决方案1】:

    来自http://backbonejs.org/

       If instead, you'd only like the changed attributes to be sent to the server, call 
       model.save(attrs, {patch: true}). You'll get an HTTP PATCH request to the server
       with just the passed-in attributes.
    

    Fiddle在骨干网收集同步上发送补丁请求:

    $(function() {
    
      Backbone.$ = $;
    
      var User = Backbone.Model.extend({
        urlRoot: "/testUrl",
        isNew : function () { return false; },
        defaults: {
            name: 'John Doe',
            age: 25
        }
      });
      var user1 = new User();
      var user2 = new User();
      var user3 = new User();
      var user4 = new User();
      var UserCollection = Backbone.Collection.extend({
        model: User,
        url: "/testUrl"
      });
      var userCollection = new UserCollection([ user1, user2, user3]);
      // update
      user1.set('name','Jane Doe');
      user4.set('name','Another User');
    
      // delete
      userCollection.remove(user2);
    
      // add
      userCollection.add(user4);
    
      userCollection.sync('patch', userCollection , { error: function () {                       
        console.log(userCollection); } });
      });
    

    【讨论】:

    • 我说的是集合——不是模型。骨干集合没有开箱即用的保存方法。
    • 我并不完全了解 Backbone.sync 的参数提供的选项。我喜欢!我会试一试并报告。谢谢!
    • 我仍然需要更改 Backbone.sync 对象以符合 Tastypie 对列表端点的 PATCH 请求的期望。具体来说,这里提供的期望:django-tastypie.readthedocs.org/en/latest/…
    • @Erik 在阅读您的链接后似乎如此。我更专注于骨干方面。我不确定,但github.com/PaulUithol/backbone-tastypie 可能会有用。
    • 我最终使用自定义 Backbone.ajax 请求到列表端点,以 Tastypie 可接受的格式发送 PATCH 请求。将 collection.fetch() 放入 ajax 调用的成功哈希中似乎让我上路了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2013-10-20
    • 2019-07-08
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多