2017-06-26 6 views
0

私は、アップロードの進行状況を示す2つのコンポーネント、ファイルアップロードコンポーネント、および進行状況バーを持つテンプレートを持っています。Emberのコンポーネント間の通信

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

ember-uploaderを使用しています。私はそうのようなプログレスバーの進捗状況を設定しようとしている:

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

私はあなたがコンポーネント間の通信にアクションを使用する必要があることを読んだが、私は唯一でfilesDidChange関数内でその進捗値へのアクセス権を持っていますアップロードコンポーネントなので、私はそれをアクションで送ることはできないと思います。この進捗値をプログレスバーコンポーネントに送信する最善の方法は何ですか?

+0

回答が役に立たなかったのですか?答えについてのコメントを残しておけば、さらに助けてもらえますか? – alptugd

+0

私はまだそれをチェックする機会がなかったので、あなたの助けをありがとう。私はそれをテストした後、私はあなたに戻ってきます。 –

答えて

1

これは、親子関係を持たないコンポーネント(コンポーネント内で他をレンダリングしない)のコンポーネント間通信を可能にするコンテキストコンポーネントを使用する場所です。

次をご覧くださいtwiddle私はあなたのために私が何を意味するのかを説明しました。私はモックember-progress-barfile-uploadコンポーネントを作成しました。 filesDidChangeの機能の代わりに、私はclickモックfile-uploadコンポーネントの機能を使用して、私はscreenXscreenYの値をember-progress-barのコンポーネントへのマウスクリックイベントに進めることにしました。

ember-progress-barは、application.hbs内のコンテキストコンポーネントとして使用されます。 ember-progress-barは、そのテンプレート内に{{yield (hash progressUpdated=(action 'progressUpdated'))}}progressUpdatedアクションを生成します。 application.hbs(ブロック形式ではember-progress-bar)。この生成されたアクションは検索され、file-uploadコンポーネントにonclickアクションとして渡されます。

これがまったく役立つかどうかわかりません。これはコンポーネント間通信に大いに役立つテクニックです。文脈的なコンポーネント(コンポーネントから得て、それが使用される予定のブロック形式のコンポーネントを使用する)のおかげで、私は再びアクションに頼ります。

+0

これは私が使用しているAPIサーバーが部分的な進歩価値を提供できないことが判明したため、私の特定の問題の解決に終わったわけではありませんでした。ありがとう! –

関連する問題