سؤال
لدي 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"]]});
};
هذا سوف يتفاعل كما تتوقع.