Puede escuchar el evento reset
del modelo y hacer su limpieza y this.destroy()
en respuesta. Para eso son los ganchos del evento. Ver http://backbonejs.org/#Events-catalog
Nota: No debe cambiar ni anular ningún método o propiedad con el guión bajo, como _removeReference
. Los guiones bajos significan que está pensado como un método interno o propiedad, y que las implementaciones internas pueden cambiar (sus API se consideran inestables). La actualización de Backbone podría romper cualquier código que dependa de métodos con guiones bajos, incluso si el lanzamiento se publicita como un cambio compatible con versiones anteriores.
Sé que su pregunta dice "sin iterar", pero realmente es la forma más confiable de manejar esto. Considere un caso en el que un modelo se ha movido de una colección a otra, pero todavía está escuchando en el evento de la primera colección reset
(porque un programador seis meses después no se dio cuenta de la conexión).
Ahora cuando se restablece la primera colección, el modelo movido se destruye. Oops!
Iterar la colección probablemente sea la mejor manera de manejar esto si no tiene un punto final en su API que eliminará todos los objetos de una colección en lote en el servidor API (que a menudo es cómo se maneja esto) .
Por suerte, esa iteración es bastante fácil:
destroyAll: function() {
var promises = [];
while(this.models.length > 0) {
promises.push(this.models[0].destroy());
}
// handle errors communicating with the server
$.when(promises).fail(function (response) {
this.trigger('syncError',
response);
}.bind(this));
}
No invalide ni cambiar los métodos o propiedades de subrayado prefijada. Vea mi respuesta a continuación para una explicación. –