3

我知道 Ember 中的操作向下和数据向上策略,但是有没有办法可以从子组件调用父组件方法(而不是操作)?

4

2 回答 2

4

好吧,如果我想从孩子调用父方法,我会以这种方式使用:

父组件.hbs:

{{component-name owner=this}}

父组件.js:

import Component from '@ember/component';

export default Component.extend({
    parentMethod(){
        // I am doing something
    }
});

子组件.js

import Component from '@ember/component';

export default Component.extend({
    didInsertElement(){
        this.get('owner').parentMethod();
    }
});

在这种情况下,这不是行动。

于 2018-07-27T16:24:12.453 回答
1

据我所知,没有直接的方法,但您可以使用全局事件总线实现相同的行为。

使用 Ember.Service 创建一个新服务,该服务将使用 Ember.Evented 充当事件总线。使用此服务父组件可以发布事件,子组件现在可以订阅这些事件而无需引用父组件

于 2018-05-08T03:04:07.023 回答