У меня есть домашняя страница, страница контакта и несколько других связанных с продуктом страниц в моем приложении.meteor js iron router: примените изменение CSS при изменении маршрута
Цель состоит в том, чтобы применить фоновое изображение к ТОЛЬКО определенным маршрутам: /homepage
и /contact
. Если пользователь переходит от любого маршрута, примените некоторое изменение css.
Я хакерство это теперь вместе с помощником на моей домашней странице, например, так:
Template.homepage.rendered = function() {
var route = Router.current();
if (route.path == '/') {
document.body.className = "showBackgroundImage";
}
};
Частичной победа здесь, так как это будет активировать CSS, но мне нужно отключить, когда изменения маршрута. Я также попытался следующие в моей router.js
:
this.route('homepage', {
path: '/',
onAfterAction: function (argument) {
// add a class name to body
document.body.className = "showBackgroundImage";
}
});
и CSS в фоновом режиме стандарт:
.showBackgroundImage {
background: url(bgImage.jpg) no-repeat center center fixed;
}
Чтобы добавить к этому методу: иногда вам нужно изменить класс тела для определенного макета для работы. Для этого используйте обратные вызовы 'rendered' и' destroy' указанного макета, то есть: 'Template.layout.rendered = function() {$ ('body'). AddClass ('layoutBody')};', а затем 'Template .layout.destroyed = function() {$ ('body'). removeClass ('layoutBody')}; ' –
Как и у Iron Router 1.0 (возможно, ранее), используйте' Router.current(). route.getName() ' для получения текущего имени маршрута (обратите внимание на изменение с 'route.name' на' route.getName() '). –
Спасибо, что заметили устаревший код, я обновил свой ответ. Чтобы далее объяснить это, 'route' теперь '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' getName() 'getter. – saimeunt