下一个路线不是从页面顶部打开(向下滚动)。为什么?

时间:2015-08-05 19:04:20

标签: meteor iron-router

有人遇到过同样的问题吗?我正在使用带有模板级订阅的铁路由器 例如。我有一个很长的页面“项目列表”,我可以向下滚动。然后我点击底部某处的一个项目,然后下一个模板渲染得比应该的低。
想象一下,你在youtube上搜索,向下滚动结果,然后你点击一个视频片段,但它不是从顶部打开而是低,所以你需要滚动到顶部才能看到视频。

我试图将“滚动到顶部”脚本放入onRendered回调中,但这种“跳跃”可以用肉眼识别。所以它变得更糟。

(更新)我现在找到了这个解决方案:

Router.onBeforeAction(function() {
  $(window).scrollTop(0);
  this.next();
});

3 个答案:

答案 0 :(得分:6)

如果您正在使用FlowRouter,您可以轻松地在triggersEnter路由定义中添加它:

const publicRoutes = FlowRouter.group({
  name: 'public',
  triggersEnter: [() => {
    window.scrollTo(0, 0);
  }],
});

答案 1 :(得分:3)

你应该试试这个

&&

参考:https://github.com/okgrow/iron-router-autoscroll

答案 2 :(得分:0)

尝试将其抛入您的代码中,如果您使用React将其抛入componentDidMount()函数

window.scrollTo(0, 0);