2016-06-29 4 views
-1

私はangularjsのサービスや工場について読んでいましたが、最良の解決策を見つけるのに何か問題がありました。基本的にはあるコントローラから別のコントローラにいくつかのデータを渡す必要があります。私はちょっとした仕事のためにサービスを作りたいとは思っていません。小さな仕事のためのサービスの使用

私はちょうど小さな仕事のために多くの意味がないと信じています。このような状況のために、anglejsには他の方法がありますか?私はコントローラ間で小さなデータを渡すことができます。私はangularjsのドキュメントを見ていましたが、最良の解決策を見つけることができません。小さな項目について

+1

いくつかのコードサンプル?コントローラは何ですか?ディレクティブ、ビュー? –

答えて

0
Use $rootScope.emit() 
コントローラーAで

$rootScope.emit('toggle',true); 
コントローラーBで

$rootScope.on('toggle', function(value){ 
}) 
+1

私は$ rootscopeの汚染を避けるでしょう –

+0

私たちはrootscopeを汚染していません、私たちはそれをイベントエミッターとして使用しています。これは標準的なアプローチです。 EventemitterライブラリのようなEventemitterライブラリ –

+0

$ rootscopeを使用しますか?子/親関係でのみ動作する最初の –

0

、あなたはパラメータを使用することができます。エンドユーザーは、URL文字列の一部のように見えます。これは、ngRouteを使用する場合と使用しない場合があります。 this stack questionをご覧ください。

エンドユーザーに表示するには不適切な、より複雑なデータやデータの場合は、サービスまたは工場を使用してください。過剰殺戮のようだが、それはあなたに大きな柔軟性を与える。

$ broadcast/$ onパターンでは、トラブルシューティングが面倒で難しくなります。

0

親/子供のコントローラの場合は、$ scopeまたは$ emit/$ broadcastで値を転送できます。

コントローラが同じレベル(兄弟)にある場合、共有データを格納するラッパーコントローラを作成できます。

他のタスクと同様の要件があると思うなら、サービスを考慮し、抽象的で再利用可能にすることができます。

どのような意味でも、十分な情報を提供していないし、実際の例が見られるまで多くのソリューションが存在する可能性があります。

0

コントローラに子親関係がある場合は、$ブロードキャストまたは$emmitを使用してデータをスローし、$ onを使用してaイベントを捕捉できます。そうでない場合は、$rootScopeをそのいずれかに注入して、を$rootScope、または$emmit$scopeとし、それに対応して$on('eventName', function(ev, data){})を使用してthetデータを取得します。

関連する問題