68 votes

Quels événements sont déclenchés lors de l'appel de fetch () sur une collection Backbone.js?

Dans mon backbone.js app, il y a un Trips collection qui détient Trip models, qui est de travailler avec des LocalStorage. Je suis en mesure d'appeler Trips.create(form_attributes) de créer et d'enregistrer un voyage à l' Todos store.

Quand j'ai installer mon application, j'appelle Trips.fetch({ success: trips_fetch_success }), et trips_fetch_success reçoit une réponse qui montre l' Trip models que l' Trips collection détient.

J'ai essayé de lier refresh et change événements à l' Trips collection, mais ces événements ne sont pas pris en me faisant croire que j'ai la mauvaise idée sur les événements qui Trips.fetch des déclencheurs.

Ma question: quels événements doivent Trips.fetch trigger? Et sont les événements déclenchés sur la collection ou sur chaque Trip models?

Merci!

59voto

Elf Sternberg Points 9764

Collection.fetch() va appeler reset() en cas de succès, qui à son tour va déclencher un "reset" de l'événement. Tous les abonnés de la collections événement de réinitialisation doit recevoir l'événement.

La clé ici est "sur la réussite." J'ai eu ce problème, seulement pour découvrir que la dorsale a été silencieusement à avaler mes messages d'erreurs. Passez un gestionnaire d'erreur, qui, au moins, les journaux de la console.log(), et voir ce qui se passe:

 trips.fetch({error: function() { console.log(arguments); }});

(Note: les Anciennes versions de backbone.js va déclencher "actualiser" au lieu de "reset")

52voto

jesal Points 2441

Si vous utilisez pivot 1.0, vous devrez passer reset : true dans l’appel de fetch() afin de lier avec l’événement de réinitialisation :

20voto

Perry Tew Points 1038

À partir de la colonne vertébrale 1.0, model.fetch() déclenche une « sync ». C’est ce qui vous devez lier à.

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