Как мы можем повторно создать шаблон при переключении маршрутов?Повторно создать шаблон при маршрутизации маршрутов
Например, у меня есть подписчик шаблон. Он обнаруживает, когда пользователь прокручивается до дисплея и подписывается на большее количество данных. Он принимает несколько параметров.
Пример: amazing_page.html
{{#each}}
{{amazing_topic}}
{{/each}}
{{>subscriber name='topics' count=5}}
subscriber.js
// грубый пример кода
Template.subscriber.onCreated(function() {
var self = this;
var type = Template.currentData().name;
var count = Template.currentData().count;
var user = Template.currentData().user;
var skipCount = 0;
self.autorun(function(c){
self.subscribe(type, skipCount, user);
var block = true;
$(window).scroll(function() {
if (($(window).scrollTop() + $(window).height()) >= ($(document).height()) && block) {
block = false;
skipCount = skipCount + count;
console.log(type);
console.log(skipCount);
self.subscribe(type, skipCount, user, {
onReady: function() {
block = true;
},
onStop: function() {
console.log('stopped');
}
});
}
});
})
});
Я использую этот шаблон с различными параметрами d ifferent маршруты. Проблема заключается в том, что пользователь переключает некоторые маршруты и прокручивается на одной странице, все подписчики, которых он получает на других страницах, будут действовать на этой странице. Более того, они будут хранить увеличенные значения для них переменных и будут делать всю включенную логику.
Я нашел плохое решение, когда мы используем Route.getName (например), сравнивая и указываем параметр абонента. Это не лучший вариант. Может кто-то помочь мне найти хорошую практику для этого :)
Простой пример:
У нас есть 3 различных маршрутов:
1) Новости 2) Видео 3) Темы
Эти шаблоны маршрутов включают специальные подписные шаблоны. И подписка работает отлично на свитке.
Хорошо, теперь давайте посмотрим на всех из них: Новости, Видео, Темы. Хорошо, теперь прокрутите вниз и ... У меня есть три экземпляра шаблона подписчика, который будет подписываться на их собственные публикации, потому что они не уничтожаются при переключении маршрутов.
И, как результат - когда пользователь прокрутки страницы темы, он зайдет на новости Подписка на и видео тоже, и он будет принимать данные из этих коллекций тоже;) А - это проблема :)
UPD: Похоже, мы находим решение. Если я использую Template.instance (autorun/subscribe), он начнет работать, если не считать некоторых странных случаев :)
Прежде всего, когда я иду по другому маршруту на следующей итерации (прокрутка вниз), он возвращает мне данные из старого , уничтоженный шаблон + ошибка. В следующий раз (следующая итерация) он начнет подписываться на правильные данные. Хм ... похоже, я ошибаюсь в разделе автозапуска ... или нет?
Прикрепленная печать экрана с консоли this
Было трудно понять, в чем проблема, но это звучит так, как будто ваши подписки не работают. – CodeChimp
Хорошо, снова. Например, мы имеем 3 различных маршрутов: 1) Новости 2) Видео 3) Темы Эти маршруты включены специальные абонентские-шаблоны. И подписка работает отлично на свитке Хорошо, теперь давайте посмотрим на всех из них: Новости, Видео, Темы. Хорошо, теперь прокрутите вниз и ... У меня есть три экземпляра шаблона подписчика, который будет подписываться на их собственные публикации, потому что они не уничтожаются при переключении маршрутов. –
С примером кода: https://forums.meteor.com/t/re-create-template-while-switching-routes/28138 –