簡體   English   中英

從組件刷新/重新加載 ember 路由

[英]Refresh / Reload ember route from a component

我有一個組件,它實際上是一個模態對話框。 當我完成該對話框並按“確定”按鈕后,我想停留在打開該對話框的停留頁面上。 這不難。

但問題是對話框更改了數據(我正在通過 REST 調用獲取數據),因此我需要刷新我已經在的路由以反映數據更改。

因為,我從一個組件調用它,我沒有Route所以不能調用route.refresh()

我試圖得到路由器:

this.set('router', Ember.getOwner(this).lookup('router:main'));

並確實過渡到了同一頁面:

_this.get('router').transitionTo('my-route')

但是由於路線沒有改變(我只打開了一個對話框), transitionTo不會被觸發!

有沒有辦法可以強制觸發transitionTo或刷新我所在的頁面?

謝謝!

首先,您可以通過將路由服務注入到組件中來輕松獲取當前路由名稱。
然后,您可以獲取當前路由實例並應用其refresh方法:

// app/components/a-component.js

import Component from "ember-component";
import service from "ember-service/inject";
import getOwner from "ember-owner/get";

export default Component.extend({
  routing: service("-routing"),
  actions: {
    refresh() {
      const currentRouteName = this.get("routing.currentRouteName");
      const currentRouteInstance = getOwner(this).lookup(`route:${currentRouteName}`);
      currentRouteInstance.refresh();
    }
  }
});

為此,在最近的路由或應用程序路由文件中定義refreshCurrentRoute方法。

actions:{
 refreshCurrentRoute(){
  this.refresh();
 }
}

從您的組件中,您需要調用refreshCurrentRoute操作。 您可以使用ember-route-action-helper或通過關閉操作。

暫無
暫無

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

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