Próbuję dynamicznie dostać i ustawić pagetitle dla mojej przykładowej aplikacji Meteor, idealnie chciałbym użyć jQuery, ale każdy inny rozwiązanie też byłby dobry.
Próbuję to zrobić w trudnej sytuacji, ustawiając sesję, gdy na stronie istnieje pewna klasa div, ale nie działa z jakiegoś powodu.
Zasadniczo mam to:
Template.layout.helpers({
pageTitle: function() { return Session.get('pageTitle'); }
});
I chcę coś zrobić
if ($('section').hasClass('single')) {
Session.set('pageTitle', 'Post Page');
}
Jakikolwiek pomysł, jak zrobić tę pracę? dzięki!
1
akmur
16 sierpień 2014, 17:47
2 odpowiedzi
Najlepsza odpowiedź
Musisz to zadzwonić do kontrolera lub szablony renderowaną sekcję tak, jak:
Template.layout.helpers({
pageTitle: function() {
return Session.get('pageTitle');
}
});
// set when a page template renders
Template.posts.rendered = function() {
setPageTitle("Blog Posts");
};
// or with Iron Router on *every* route using some sort of variable
Router.onBeforeAction(function() {
var someDynamicValue = "FOO";
setPageTitle(someDynamicValue);
});
// or in an IronRouter Controller
PostsController = RouteController.extend({
onBeforeAction: function() {
setPageTitle("Blog Posts");
}
});
// helper function to set page title. puts a prefix in front of page, you
// could opt set a boolean to override that
function setPageTitle(titleName) {
var prefix = "My Site - ";
if ($('section').hasClass('single')) {
Session.set('pageTitle', prefix + titleName);
}
}
4
SkinnyGeek1010
16 sierpień 2014, 14:34
Jak wskazał @Kuba Wyrobek, musiałem użyć funkcji szablonu.layout.Rendered.
Oto fragment, który pracuje
Template.postsList.rendered = function(){
Session.set('pageTitle', 'Listing Page')
};
0
akmur
16 sierpień 2014, 14:29