簡體   English   中英

如何在燼中的每個路徑轉換上執行操作?

[英]How to run an action on every route transition in ember?

我有一個具有多個路由的Ember應用程序,我希望每次用戶進行轉換時都將頁面滾動到頂部。 問題是我不想在每條路線的didTransition方法上重復相同的代碼。

因此,有沒有一種方法可以觀察所有路由轉換並僅在一個地方執行(聲明)一個動作?

另一種說法是:如果我有父級路線,可以向所有子級執行相同的操作嗎?

我當前的解決方案是在每條路線的didTransition方法上觸發操作,如下所示:

//router.js
Router.map(function() {
  this.route('login');
   this.route('portal',{ path:'/'}, function() {
      this.route('clientes');
      this.route('convite');
      this.route('usuario', function() {
      this.route('view', { path: '/:id' });
  });
 });

 //everyChildren.route.js
 didTransition(){
   this.super(...arguments);
   Ember.$("html, body").animate({ scrollTop: 0 }, "slow");
 }

有沒有辦法做到這一點 ?

PS :。 我正在使用Ember 2.14.0版本

您可以嘗試在application路由上定義didTransition操作。 如果子路由沒有為事件定義處理程序,則它應該冒泡上升到父路由,並且application是最高路由。

或者,您可以使用didTransition操作創建一個混合 ,並將該混合添加到某些路由。

另外,查看您的代碼,我認為您可能對使用液體射擊附加組件感興趣(如果您的目標是動畫過渡)

使用ember-router-scroll

該插件可滿足您的需求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM