2

2 つのディレクティブを互いに通信させる最良の方法は何ですか? 次の設定があるとしましょう:

<drop-uploader></drop-uploader>
<drop-uploader></drop-uploader>

<progress-bar></progress-bar>

「uploader」ディレクティブに「progress bar」ディレクティブを通知させる最良の方法は何ですか? rootScope でイベントを使用するか、サービスを使用するのが最善の方法ですか? ディレクティブを別のディレクティブの属性として参照して、そのスコープにアクセスする方法はありますか? このようなもの...

<drop-uploader progress-bar="thisone"></drop-uploader>
<drop-uploader progress-bar="thisone"></drop-uploader>

<progress-bar name="thisone"></progress-bar>
4

2 に答える 2

1

$broadcast他のすべてのメカニズムは、同期を維持する必要がある状態をシステムに導入するため、$rootScope を使用してイベントを行います。

のプロパティを使用するrootscopeか、共有変数を持つサービスを作成します。

また、シナリオがイベンティング パターンに適合する場合は、$broadcastより良いでしょう。

于 2013-09-20T14:42:48.457 に答える
1

コントローラー間でデータを共有するためのオプションがあります (ドキュメントで「require」を確認してください) が、私が理解している限り、その方法を使用して兄弟間でデータを共有することはできません。親/子でなければなりません(間違っている場合は誰かが訂正してください)。

ただし、サービスを使用してデータを共有することはできます。いくつの異なるコントローラー/サービス/ディレクティブがそれを呼び出しても、各サービスのインスタンスは 1 つしかないため、一方のデータを設定すると他方が更新されます。

ここで説明するソリューションは、ディレクティブとコントローラーで機能します: Angularjs、ルート間でスコープを渡す

于 2013-09-20T14:39:31.023 に答える