Ember 3.12+ (这在技术上是此处列出的 3.20 代码)
import EmberRouter from '@ember/routing/router';
const Router = EmberRouter.extend({
init() {
// call event everytime route changes
this.on('routeDidChange', () => {
this._super(...arguments);
window.scrollTo(0, 0); // scrolls to top
});
}
});
Router.map(function () {
// your mapping code goes here
});
export default Router;
3.12 之前(这在技术上是 3.4,但关键代码应该相同)
import EmberRouter from '@ember/routing/router';
const Router = EmberRouter.extend({
didTransition() {
this._super(...arguments);
window.scrollTo(0, 0);
}
});
Router.map(function () {
// your mapping code goes here
});
export default Router;
我们已经多次处理过这个问题,我们发现最简单和最直接的方法是使用“路由转换”事件函数在 router.js 文件中配置一次。我们didTransition
在 Ember 3.12 中弃用它之前使用它来代替routeDidChange
. 我在下面发布了两个示例。根据您使用的 Ember 版本,某些语法可能略有不同,但核心代码应该相同。