Model.delete 和 Collection.delete 以及 Backbone.js

Model.delete and Collection.delete with Backbone.js

将 Backbone.js 与 Express 和 MongoDB 结合使用,我希望能够使用 Backbone 的内置 REST 功能,同时还可以使用查询字符串。

例如,如果我删除一个Backbone模型,我希望路线去

del /models/:model_id

但是,我还希望能够从使用该模型的集合中删除多个项目,这样会是:

del /models?model_id=1&model_id=2&model_id=3

这可能吗?如何实现?

普通方法是为每个模型调用 .destroy()。如果您想生成一个删除多个特定模型的事件,您可以覆盖 Backbone.Collection.sync 或创建一个新函数,但这不是内置的 REST 功能。

Cleanest way to destroy every Model in a Collection in Backbone?

如果你的服务器路由是固定的,你可以实现一个自定义方法来匹配它:

var MyModel = Backbone.Collection.extend({
   url: '/models',
   initialize: function(options) { ...},
   deleteSelected: function(models, options) {
       var url = this.url;
       url += model_id='+models[0].id;
       for (var i=1; i<models.length; i++) url += '&model_id='+models[i].id;
       $.ajax({
        type: "DELETE",
        url: url,
        success: options.success || function() {...},
        error: options.error || function() {...}
       });
    }
});