我正在使用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中实现这一点呢?
1条答案
按热度按时间gcxthw6b1#
你不需要。这实际上是其中一个仍然有点不一致的东西,即使是辛烷。因为路由模板的绑定上下文是
Controller
,而不是路由。所以你不能访问{{this.refreshRoute}}
的动作。要在
Route
上调用一个操作,最好的方法是使用send
。但要做到这一点,你需要一个控制器,并在控制器上定义一个不同的操作:控制器/一些.js:
现在,您可以从模板中使用此函数:
然后从您的组件中使用它:
或直接从按钮: