문제

나는 Template 명명 된 movies, 에는 컬렉션에서 개체 목록을 반환하는 메서드가 있습니다.해당 개체 목록을 생성하는 쿼리는 다른 템플릿 메서드의 데이터를 사용하여 동적으로 생성됩니다.

필터 데이터가 변경될 때마다 템플릿을 다시 렌더링하거나 특정 템플릿 메서드와 관련된 구성 요소만 다시 렌더링하고 싶습니다.

사용된 두 가지 방법은 다음과 같습니다.

  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(), HTML 구성요소는 다음을 사용합니다. Template.movies.movies() 데이터는 새 쿼리 결과로 업데이트되지 않습니다.

그 행동을 어떻게 달성할 수 있습니까?

도움이 되었습니까?

해결책

가장 쉬운 방법은 두 도우미가 모두 활용하는 자바스크립트 함수를 만드는 것입니다.

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