質問

Templateという名前のmoviesを持ち、コレクションからオブジェクトのリストを返すメソッドがあります。 オブジェクトのリストを生成するクエリは、別のテンプレート方式からのデータを使用して動的に作成されます。

フィルタデータが変わるたびに、テンプレートを再レンダリングする、またはその特定のテンプレート方式に関連付けられているコンポーネントだけを再レンダリングしたいと思います。

これは使用される2つの方法があります:

  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"]]});
  };
.

HTML側では、{{#each movies}}{{> movie}}{{/each}}メソッドからの結果を表示するための単純なmoviesです。

問題は、Session.get("filter")が変化しているので、Template.movies.filter()が存在する場合、Template.movies.movies()データに依存するHTMLコンポーネントは新しいクエリ結果で更新されません。

その行動をどのように達成しますか?

役に立ちましたか?

解決

最も簡単な方法は、両方のヘルパーが利用するJavaScript関数を作成するだけです。

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"]]});
};
.

これはあなたが期待するにつれて反応します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top