在Meteor.js中使用iron-router转到页面的某个id部分(url#portion)
Using iron-router to go to a certain id section of the page (url#portion) in Meteor.js
我使用 iron-router 设置了路由,以确保页面到达页面顶部:
Router.route('/services', {
name: 'services',
template: 'services',
onAfterAction: function () {
scrollTop();
}
});
function scrollTop() {
window.scroll(0, 0);
}
但是,如果我在另一条路线上,并且我有一个 link 比如 /services#thisid
它仍然会把我带到页面的顶部(而不是带有 id=thisid 的页面部分)。
有办法解决这个问题吗?
这应该可以解决您的这个问题和您的 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。
我使用 iron-router 设置了路由,以确保页面到达页面顶部:
Router.route('/services', {
name: 'services',
template: 'services',
onAfterAction: function () {
scrollTop();
}
});
function scrollTop() {
window.scroll(0, 0);
}
但是,如果我在另一条路线上,并且我有一个 link 比如 /services#thisid
它仍然会把我带到页面的顶部(而不是带有 id=thisid 的页面部分)。
有办法解决这个问题吗?
这应该可以解决您的这个问题和您的 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。