سؤال

لدي 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"]]});
  };

على الجانب هتمل انها بسيطة {{#each movies}}{{> movie}}{{/each}} لإظهار النتائج من movies الطريقة.

المشكلة هل هذا عندما Session.get("filter") التغييرات وبالتالي يفعل ذلك Template.movies.filter(), ، مكون هتمل الاعتماد على 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