Attendez que la collection récupère tout dans l'épine dorsale
J'ai deux un ensemble de collections. L'un est pour les catégories et l'autre pour les Éléments. Je nie à attendre pour les catégories de terminer l'extraction de tout pour moi, pour définir la catégorie pour les Éléments à récupérer.
Aussi, j'ai à chaque fois que je clique sur une catégorie, je dois re-télécharger une nouvelle Collection d'Éléments, parce que j'ai une pagination passe à chaque fois que je clique sur une catégorie, il n'a pas d'actualiser ou de ré-extraction de la collection, donc la pagination code est de jouer avec le mal de collecte. Des idées?
this.categoryCollection = new CategoryCollection();
this.categoryCollection.fetch();
this.itemCollection = new ItemCollection();
this.itemCollection.fetch();
source d'informationauteur jongbanaag
Vous devez vous connecter pour publier un commentaire.
Un moyen rapide serait de passer juste un rappel dans le premier
fetch()
appel qui appelle la seconde.fetch()
prend unoptions
objet qui prend en charge unsuccess
(eterror
) de rappel.Pas le plus élégant, mais il fonctionne. Vous pourriez probablement faire quelques trucs créatifs avec deferreds depuis
fetch()
retourne le jQuery différé qui est créée par le$.ajax
appel qui se passe.Pour la pagination problème, c'est difficile à dire sans voir ce que votre pagination code est en train de faire. Vous allez avoir à faire rouler la pagination des trucs vous-même depuis l'épine Dorsale ne le supporte pas en natif. Ce que je serais probablement faire est de créer une nouvelle Collection pour la page critères qui sont interrogées et probablement de créer un serveur d'action je pouvais frapper l'appui de la pagination (cartographie de la Collection
url
à la paginé serveur d'action). Je n'ai pas mis une tonne de réflexion qui, si.Juste couru dans une situation similaire. J'ai fini par passer de jquery.ajax paramètres pour le fetch() de l'appel. Vous pouvez faire de la première extraction synchrone. À partir de la épine dorsale docs:
Votre code peut être simplifié à quelque chose comme:
J'ai eu à réagir à ce fil car des réponses.
C'est la SEULE FAÇON DE le FAIRE DROITE!!!!!
Par le fait que l'extraction de ces deux collections en même temps et vous pouvez avoir des cas lorsque les deux sont prêts. Afin de ne pas attendre la fin du chargement de la première collections afin d'en récupérer d'autres, vous n'êtes pas faire des appels ajax sync etc que vous pouvez voir dans les autres réponses!
Voici une doc sur Différés objets.
Remarque: dans cet exemple le cas lorsqu'un ou plusieurs différée objet d'échec, il n'est pas couvert. Si vous souhaitez couvrir ce cas également à côté de
.done
vous devrez ajouter.fail
rappel sur.when
et également ajoutererror
gestionnaire de marque échec de d1 ou de d2 dans cet exemple.Je suis en utilisant RelationalModel et j'ai créé une file d'attente de fetch, qui appelle le "changement" de l'événement lorsque le fait de chargement:
La classe serait d'appel:
J'espère que vous pouvez améliorer sur ce, il a bien fonctionné pour moi.
Je me suis retrouvé avec le même problème aujourd'hui et a trouvé une solution à cela:
Maintenant lors de l'extraction sur la collecte terminée, un "reset" est déclenchée et sur "reset" appel de la méthode render() pour l'afficher.
À l'aide de
{async: false}
n'est pas le moyen idéal pour traiter avec épine Dorsale du fetch().juste mis en jQuery pour devenir synchrone
C'est la solution la plus simple, je suppose. Bien sûr, le démarrage de nouvelles demandes alors que ces extractions seront a commencé comme synchrone trop, ce qui peut être quelque chose que vous n'aimez pas.