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() {...}
});
}
});
将 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() {...}
});
}
});