在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。