我设置了使用铁路由器的路由,以确保页面位于页面顶部:
Router.route('/services', {
name: 'services',
template: 'services',
onAfterAction: function () {
scrollTop();
}
});
function scrollTop() {
window.scroll(0, 0);
}
但是,如果我在其他路线上,并且我有/ services #hisid
这样的链接它仍然会将我带到页面的顶部(而不是带有id = thisid的页面部分)。
有没有办法解决这个问题?
答案 0 :(得分:0)
这可以解决您的问题以及此问题和layout override问题。
Router.configure({
layoutTemplate: 'main',
onAfterAction: function(){
console.log('hash', this.params.hash);
if(!this.params.hash){
scrollTop();
}
}
});
Router.route('/services', {
name: 'services',
template: 'services',
});
Router.route('/inquiry', {
name: 'inquiry',
template: 'inquiry',
layoutTemplate: 'alternate'
});
this.params.hash
的检查确保在执行scrollTop之前没有散列值。查询路线上的layoutTemplate
会覆盖布局,同时仍然尊重全局onAfterAction。