簡體   English   中英

如何從 Ember Octane 中的子組件調用當前路由器中的操作?

[英]How to invoke an action in the current router from the child component in Ember Octane?

我正在使用 Ember Octane 版本,我想從子組件調用Route一個操作。 偽代碼如下。

 **Route** export default class SomeRouter extends Route { model() { return data; } @action refreshRoute() { this.refresh(); } } **SomerRouter.hbs** <ChildComponent> //Using child component here **ChildComponent** export default class ChildComponent extends Component { @action revert() { //How do I invoke the "refreshRoute" on the SomeRouter from here? } }

在上述子組件的 revert 方法中,“this”指的是組件本身,但在之前版本的 ember 中,“this”指的是路由器,我可以簡單地調用 this.refresh()。 那么我如何在 Ember Octane 中實現這一點。 真的很感激任何幫助。

你沒有。 這實際上是即使使用辛烷值仍然有點不一致的事情之一。 因為路由模板的綁定上下文是Controller ,而不是路由。 因此,您無法使用{{this.refreshRoute}}訪問該操作。

要在Route上調用操作,您最好的方法是 uzilize send 但是要做到這一點,您需要一個控制器並在控制器上定義不同的操作:

控制器/some.js

export default class SomeController extends Controller {
  @action
  refreshRouteFromController() {
    this.send('refreshRoute');
  }
}

現在,您可以從模板中使用此功能:

<ChildComponent @refresh={{this.refreshRouteFromController}}>

然后從您的組件中使用它:

revert() {
   this.args.refresh();
}

或直接從按鈕:

<button {{on "click @refresh}}>...</button>

暫無
暫無

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

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