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

Dim*_*oda 4 meteor iron-router

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


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


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

Router.onBeforeAction(function() {
  $(window).scrollTop(0);
  this.next();
});
Run Code Online (Sandbox Code Playgroud)

Mar*_*ust 6

如果您使用的是FlowRouter,则可以在triggersEnter路由定义上轻松添加:

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

  • 要在全局设置它,你可以使用`FlowRouter.triggers.enter([()=> {window.scrollTo(0,0);}]); ` (2认同)