【问题标题】:Communication between components in EmberEmber 中组件之间的通信
【发布时间】:2017-06-26 22:45:20
【问题描述】:

我有一个包含两个组件的模板,一个文件上传组件和一个显示上传进度的进度条。

{{file-upload}}
{{ember-progress-bar progress=progress}}

我正在使用 ember-uploader。我正在尝试像这样设置进度条的进度:

uploader.on('progress', e => {
    // send progress to other component
});

我读到您应该使用动作在组件之间进行通信,但我只能在上传组件的 filesDidChange 函数中访问该进度值,所以我认为我不能在动作中发送它。将此进度值发送到进度条组件的最佳方式是什么?

【问题讨论】:

  • 这个答案对你没有帮助吗?如果您让 cmets 关于答案,我可以提供进一步的帮助吗?
  • 我还没有机会去看看,非常感谢你的帮助。测试完我会回复你的。

标签: javascript ember.js file-upload progress-bar


【解决方案1】:

这是我使用上下文组件为没有父子关系的组件启用组件间通信的地方(一个不在其模板中呈现另一个)。

请看下面twiddle我为你准备的说明我的意思。我创建了模拟 ember-progress-barfile-upload 组件。当然,我使用click 函数代替filesDidChange 函数来模拟file-upload 组件,我决定将screenXscreenY 值发送到鼠标单击事件到ember-progress-bar 组件作为进度。

ember-progress-bar 用作application.hbs 中的上下文组件;其中ember-progress-bar 产生progressUpdated 动作,其模板内有{{yield (hash progressUpdated=(action 'progressUpdated'))}}。在application.hbs 内(其中ember-progress-bar 以块形式使用);这个产生的动作被检索并作为onclick 动作传递给file-upload 组件。

我不知道这是否对你有帮助;但这是我大量用于组件间通信的技术。多亏了上下文组件(从组件产生并在将要使用的块形式中使用组件),我再次依赖于操作。

【讨论】:

  • 这并没有解决我的特定问题,因为我们使用的 API 服务器无法提供部分进度值,但我认为如果它做了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-11-21
  • 2014-12-21
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 2016-06-09
  • 2015-09-18
相关资源
最近更新 更多