使用iron-router转到Meteor.js中页面的某个id部分(url#部分)

时间:2016-02-25 03:39:35

标签: javascript meteor iron-router

我设置了使用铁路由器的路由,以确保页面位于页面顶部:

Router.route('/services', {
    name: 'services',
    template: 'services',
  onAfterAction: function () {
          scrollTop();
  }  
});

function scrollTop() {
    window.scroll(0, 0);
}

但是,如果我在其他路线上,并且我有/ services #hisid

这样的链接

它仍然会将我带到页面的顶部(而不是带有id = thisid的页面部分)。

有没有办法解决这个问题?

1 个答案:

答案 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。