0

我有一个使用 Rails 后端制作的简单列表样式的 Backbone 应用程序。

我有一个收藏:

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 中,或者我是否做一些单独的事情?

4

2 回答 2

2

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

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

当您reset不带任何参数调用时,它会从集合中删除所有模型。

于 2012-05-19T16:03:24.043 回答
2

您可以在您的集合上调用一个方法destroy,在其中您可以采用几种方法之一来发出 AJAX 请求(为了与 Backbone 协调)。请注意,您可能不想调用您的集合方法clear,因为 Backbone 模型已经有一个clear具有不同语义的方法。

  1. 创建一个Backbone.Model具有正确 URL 和 ID 的一次性实例,然后在其上调用“destroy”
  2. 使用“delete”方法调用 Backbone.sync,并使用仅具有“url”属性和具有正确 ID 的空“toJSON”函数的一次性模型对象
  3. 进行直接的 jQuery$.ajax调用。
于 2012-05-19T16:08:06.013 回答