骨干一次性ajax请求

时间:2012-05-19 14:53:27

标签: javascript backbone.js

我有一个简单的List-style Backbone应用程序,我正在使用Rails后端。

我有一个集合:

var ItemList = Backbone.Collection.extend({
  model: Item,

  initialize: function(id) {
    this.id = id;
  },

  url: function(){
    return '/lists/' + this.id + '/items';
  },

});

所有标准CRUD操作都可以在模型中正常运行。但我有一条“额外”路线 - “清除”,将清除一个节目中列表中的所有项目。路线是:

/lists/[:id]/clear

因为这不在正常的CRUD操作之外,是否可以将其挂钩到正常的Collection中,或者我是否单独执行某些操作?

2 个答案:

答案 0 :(得分:2)

您可以添加自己的执行/lists/:id/clear的方法,然后在完成后对集合执行reset

clear: function() {
    var _this = this;
    $.ajax({
        url: '/lists/' + this.id + '/clear',
        //...
        success: function() {
            _this.reset();
        }
    });
}

当您在没有任何参数的情况下调用reset时,它会从集合中删除所有模型。

答案 1 :(得分:2)

你可以在你的集合上创建一个名为destroy的方法,在那里你可以采用几种方法之一来制作AJAX请求(按照与Backbone协调的顺序)。请注意,您可能不想调用收集方法clear,因为Backbone Models已经有一个具有不同语义的clear方法。

  1. 使用正确的网址和ID创建一个丢弃Backbone.Model实例,然后调用' destroy'在它上面
  2. 使用方法调用Backbone.sync"删除"和一个只有一个' url'的丢弃模型对象财产和空的' toJSON'具有正确ID的功能
  3. 直接进行jQuery $.ajax调用。