组件如何从其父组件同步获取值?

How can a component obtain a value synchronously from its parent?

考虑以下使用 Semantic UI 的 Ember 组件:

import Ember from 'ember';

export default Ember.Component.extend({
  classNames: ['ui', 'mini', 'modal'],
  didInsertElement() {
    this.$().modal({
      onApprove: () => {
        let promise = // obtain promise from parent... somehow
        promise.then(() => {
          this.$().modal('hide');
        });
        return false;
      }
    });
  }
});

一旦可以访问元素,模式对话框就会初始化。 onApprove 选项指定当用户在对话框中单击 "OK" 时调用的回调。组件的父级提供一个 Ember.RSVP.Promise,解析后关闭对话框。

问题就出在这里——如何获取父节点的promise?我考虑了以下可能性:

有没有办法让组件以同步方式向父级请求值?

闭包操作将 return 值,因此您可以 return 闭包操作中的 Promise。

{{modal-dialog getPromise=(action 'getPromise'}}

如果 getPromise 方法是 returning the promise 那么你可以像这样得到它 let promise = this.get('getPromise')()