È possibile ascoltare l'evento reset
dal modello ed effettuare la pulizia e this.destroy()
in risposta. Ecco a cosa servono gli hook dell'evento. Vedere http://backbonejs.org/#Events-catalog
Nota: non è assolutamente necessario modificare o sovrascrivere alcun metodo o proprietà preceduto da un carattere di sottolineatura, ad esempio _removeReference
. I caratteri di sottolineatura indicano che è inteso come un metodo o una proprietà interna e che le implementazioni interne potrebbero cambiare (le loro API sono considerate instabili). L'aggiornamento di Backbone potrebbe interrompere qualsiasi codice che si basa su metodi con prefisso, anche se la versione è pubblicizzata come una modifica compatibile con le versioni precedenti.
So che la tua domanda dice "senza iterare", ma è davvero il modo più affidabile per gestirlo. Considera un caso in cui un modello è stato spostato da una raccolta all'altra, ma è ancora in ascolto sull'evento reset
della prima raccolta (perché un programmatore sei mesi dopo non ha notato la connessione).
Ora, quando viene ripristinata la prima raccolta, il modello spostato viene distrutto. Oops!
L'iterazione sulla raccolta probabilmente è il modo migliore per gestirlo se non si dispone di un endpoint sull'API che eliminerà tutti gli oggetti in una raccolta in batch sul server API (che è spesso il modo in cui viene gestito) .
Per fortuna, che l'iterazione è piuttosto semplice:
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));
}
fonte
2013-04-12 17:17:36
Non escludere o modificare i metodi o proprietà di sottolineatura-prefisso. Vedi la mia risposta, sotto per una spiegazione. –