当哈希没有明显改变时,如何强制铁路由器做出反应?

时间:2015-05-30 17:05:25

标签: hash meteor iron-router

当使用iron-router使用引用下一部分id的锚点按钮滚动到哈希时,例如:

<a class="button" href="{{pathFor 'home' hash='about'}}"> 

铁路由器在第一次点击按钮时愉快地带我们去约会区。

如果您使用鼠标向后滚动并再次单击相同的按钮,则不会进行滚动。

我认为这是因为目的地显然与当前的路由器位置相同,因此没有触发反应。

我如何强迫反应?

我已经尝试在覆盖scrollToHash函数的window.location中清除哈希:

Router._scrollToHash = function(hash) {
  var section = $(hash);
  if (section.length) {
    var sectionTop = section.offset().top;
    $("html, body").animate({
      scrollTop: sectionTop
    }, "slow");
  }
  window.location.hash = '';
};

这允许第二次点击但不会更多,这让我感到困惑。

1 个答案:

答案 0 :(得分:1)

将window.location.hash设置为空格而不是空字符串:

Router._scrollToHash = function(hash) {
  var section = $(hash);
  if (section.length) {
    var sectionTop = section.offset().top;
    $("html, body").animate({
      scrollTop: sectionTop
    }, "slow");
  }
  window.location.hash = ' ';

};

也可能将其设置为不存在的哈希值。

除了可以从第二页激活菜单链接以将您带到哈希的封面外,还需要此包:

meteor add okgrow:iron-router-autoscroll

结合使用它涵盖了我所想过的每一个案例。