gpt4 book ai didi

ember.js - 如何从 Ember Octane 中的子组件调用当前路由器中的操作?

转载 作者:行者123 更新时间:2023-12-01 13:11:25 26 4
gpt4 key购买 nike

我正在使用 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 中实现这一点。非常感谢任何帮助。

最佳答案

你没有。这实际上是即使使用辛烷值仍然有点不一致的事情之一。因为路由模板的绑定(bind)上下文是Controller ,而不是路线。因此,您无法使用 {{this.refreshRoute}} 访问操作.

调用 Route 上的操作您最好的方法是使用 send .但要做到这一点,您需要一个 Controller 并在 Controller 上定义不同的操作:

Controller /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>

关于ember.js - 如何从 Ember Octane 中的子组件调用当前路由器中的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com