15

私はAngularJSを初めて使用し、簡単な小さなアプリを自分で作成しようとしています。でフェッチされるアプリのJSONデータが$resourceあり、このデータは複数のビュー/ルートで同じである必要があります。ただし、新しいルートに移動すると、JSONデータ(として保存されている$scope.data)は新しいビューで使用できなくなります。このデータを新しいビューに渡し、別のフェッチを必要としないようにするにはどうすればよいですか?(チュートリアルの電話カタログアプリは、私が知ることができるものから毎回このデータを再フェッチします。)

私の理解で$rootScopeは、これは可能ですが、一般的には眉をひそめているようです。これがあまり意味をなさない場合は、お詫び申し上げます。私はここで非常に深いところに飛び込んでいます。

4

1 に答える 1

17

サービスを使用してデータを保存します。このデータにアクセスする必要がある各コントローラーにそのサービスを注入します。コントローラが作成されて実行されるたびに(別のビュー/ルートに切り替えるため)、コントローラはサービスにデータを要求できます。サービスにまだデータがない場合は、サーバーにリクエストを送信し、コントローラーにpromiseを返すことができます(その方法については、以下を参照してください)。サービスにデータがある場合は、すぐにコントローラーに返すことができます。

サービス中の$http応答の処理も参照してください。

コントローラとは異なり、サービスはシングルトンであることに注意してください。

別のバリエーション:サービスが作成されると、データ自体をフェッチし、後で使用するために保存することができます。コントローラは、サービスのプロパティまたは関数を$watchすることができます。このアプローチの例については 、現在のユーザーコンテキストをAngularに保存するにはどうすればよいですか?を参照してください。

于 2013-02-12T03:35:22.137 に答える