[英]How to listen parent component value change in child component 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.