16 votes

BackboneJS collection.reset() vs collection.fetch()

J'ai lu et relu les documents relatifs à ces deux méthodes, mais je n'arrive pas à comprendre pourquoi on pourrait utiliser l'une plutôt que l'autre ?

Quelqu'un pourrait-il me donner une situation de code de base où l'un serait appliqué et l'autre pas ?

33voto

McGarnagle Points 56802

reset définit la collection avec un tableau de modèles que vous spécifiez :

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

fetch récupère les données de la collection sur le serveur, en utilisant l'URL que vous avez spécifié pour la collection.

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

Voici un violon qui illustre la différence.

4voto

Cyclone Points 1580

Nous supposons ici que vous avez lu le documentation sinon ça va être un peu confus ici.

Si vous regardez la documentation de aller chercher y réinitialiser Ce qu'il dit, c'est que, si vous avez spécifié l'option url de l collection - qui pourrait pointer vers un code serveur, et devrait retourner un json de models et vous voulez que le collection pour être rempli de la models étant renvoyée, vous utiliserez fetch .

Par exemple, vous avez le json suivant qui est renvoyé par le serveur sur l'url de la collection :

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

Ce qui créera 3 modèles dans votre collection après une récupération réussie. Si vous recherchez le code de collection fetch aquí vous verrez que fetch obtiendra la réponse et qu'en interne, il appellera soit reset o add en fonction des options spécifiées.

Donc, pour en revenir à la discussion, reset suppose que nous avons déjà json of models que nous voulons stocker dans la collection, nous le passerons comme un paramètre. Dans votre vie, si vous voulez mettre à jour la collection et que vous avez déjà les modèles côté client, alors vous n'avez pas besoin d'utiliser la fonction fetch , reset fera votre travail.

Donc, si vous voulez que le même json soit rempli dans la collection avec l'aide de la réinitialisation, vous pouvez faire quelque chose comme ceci :

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

Eh bien, ce n'est pas une pratique à suivre, pour ce scénario. fetch est meilleur, il est juste utilisé pour l'exemple.

Un autre exemple de réinitialisation se trouve sur le documentation page.

J'espère que cela vous donnera un peu d'idée et rendra votre vie meilleure :)

1voto

funnydaredevil Points 108

Reset() est utilisé pour remplacer la collection par un nouveau tableau. Par exemple :

@collection.reset(@full_collection.models)

chargerait les modèles @full_collections, toutefois

@collection.reset()

retournerait une collection vide. Et la fonction fetch() renvoie une collection de modèles par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X