我有一个包含两个组件的模板,一个文件上传组件和一个显示上传进度的进度条。
{{file-upload}}
{{ember-progress-bar progress=progress}}
我正在使用ember-uploader。我试图像这样设置进度条的进度:
uploader.on('progress', e => {
// send progress to other component
});
我已经读过您应该使用操作来在组件之间进行通信,但我只能在上传组件的filesDidChange函数中访问该进度值,所以我不认为我可以将其发送到一种行为。将此进度值发送到进度条组件的最佳方法是什么?
答案 0 :(得分:1)
这是我使用上下文组件为没有父子关系的组件启用组件间通信的地方(一个不在其模板中呈现另一个组件)。
请查看以下twiddle我已为您准备好说明我的意思。我创建了模拟ember-progress-bar
和file-upload
组件。我当然使用filesDidChange
函数代替click
函数来模拟file-upload
组件,我决定将screenX
和screenY
值发送到鼠标单击事件以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
组件。
我不知道这对你有帮助吗?但这是我大量用于组件间通信的技术。由于上下文组件(从组件中产生并使用块形式的组件将在其中使用),我再次依赖于操作。