2012-11-22 9 views

risposta

27

reset imposta la collezione con una serie di modelli che si specifica:

collection.reset([ { name: "model1" }, { name: "model2" } ]); 

fetch recupera i dati della raccolta dalla server, utilizzando l'URL che hai specificato per la raccolta.

collection.fetch({ url: someUrl, success: function(collection) { 
    // collection has values from someUrl 
} }); 

Here's a Fiddle illustrating the difference.

+0

Tale buona, succinta, pieni di risposta grazie mille :) – benhowdle89

+0

questa risposta non è completa. resetta la scrittura su tutti i modelli esistenti nella collezione o cosa? –

+0

@AlexMills sì, cancella e quindi imposta – McGarnagle

1

reset() viene utilizzato per sostituire la raccolta con il nuovo array. Ad esempio:

@collection.reset(@full_collection.models) 

sarebbe caricare @full_collections modelli, tuttavia

@collection.reset() 

restituirebbe insieme vuoto. E la funzione fetch() restituisce la raccolta predefinita del modello

3

Supponiamo che tu abbia letto lo documentation, altrimenti qui ci sarà un po 'di confusione.

Se guardate la documentazione di fetch e reset, quello che dice è, si supponga di avere specificato la proprietà url del collection - che potrebbe essere rivolto a qualche codice server, e dovrebbe restituire un json serie di models, e si vuoi che il collection venga riempito con il models restituito, verrà utilizzato fetch.

Per esempio è stato il seguente JSON essere restituito dal server sull'URL collezione:

[{ 
    id : 1, 
    name : "a" 
}, { 
    id : 2, 
    name : "b" 
}, { 
    id : 3, 
    name : "c" 
}] 

Che creerà 3 modelli nella vostra collezione dopo il successo recupero. Se cerchi il codice collection fetchhere vedrai che il recupero riceverà la risposta e internamente chiamerà reset o add in base alle opzioni specificate.

Quindi, tornando alla discussione, reset presuppone che abbiamo già json of models, che vogliamo archiviare nella raccolta, lo passeremo come parametro ad esso. Nella tua vita, sempre se vuoi aggiornare la collezione e hai già i modelli sul lato client, non hai bisogno di usare fetch, reset farà il tuo lavoro.

Quindi, se si vuole la stessa JSON da riempire nella collezione con l'aiuto di ripristino si può fare qualcosa di simile:

var _self = this; 
$.getJSON("url", function(response) { 
    _self.reset(response); // assuming response returns the same json as above 
}); 

Bene, questo non è una pratica da seguire, per questo scenario fetch è migliore, è solo usato ad esempio.

Un altro esempio di ripristino è nella pagina documentation.

spero che dà un po 'di idea e rende la vita migliore :)

Problemi correlati