Question

j'ai un Template nommé movies, qui possède une méthode qui renvoie une liste d'objets d'une collection.La requête permettant de générer cette liste d'objets est créée dynamiquement à l'aide des données d'une autre méthode de modèle.

Je voudrais restituer le modèle, ou simplement les composants associés à cette méthode de modèle spécifique, chaque fois que les données du filtre changent.

Voici les deux méthodes utilisées :

  Template.movies.filter = function () {                                             
    if (Session.equals("filter", undefined)) {                                       
      return {};
    }
    return Session.get("filter");                                                    
  };                                                                                 

  Template.movies.movies = function () {                                             
    return Movies.find(Template.movies.filter(), {sort: [["Poster", "desc"]]});
  };

Côté HTML c'est simple {{#each movies}}{{> movie}}{{/each}} pour montrer les résultats de movies méthode.

Le problème est-ce quand Session.get("filter") change et donc aussi Template.movies.filter(), le composant HTML s'appuyant sur Template.movies.movies() les données ne seront pas mises à jour avec les nouveaux résultats de la requête.

Comment pourrais-je obtenir ce comportement?

Était-ce utile?

La solution

Le moyen le plus simple consiste simplement à créer une fonction javascript que les deux assistants utilisent :

var getFilter = function() {
  if (Session.equals("filter", undefined)) {                                       
    return {};
  }
  return Session.get("filter")
}

Template.movies.filter = function() { return getFilter(); }
Template.movies.movies = function () {                                             
  return Movies.find(getFilter(), {sort: [["Poster", "desc"]]});
};

Cela réagira comme prévu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top