1

私はアプリを持っており、ルートを利用して 2 つの異なるビューをロードしています。

最初のルート#/はメイン リスト ビューです。それは毎回うまくいきます。

私の 2 番目のルートは#/view/:id、リスト項目がクリックされたときに 2 番目のビューをロードします。

ビューは ID に基づくデータ駆動型であり、そのすべてがI created$httpを通じてリクエストを行う必要があります。service

ルートを離れると、#/view/:idそのビューが完全にアンロードされ、戻ってきたときに再ロードされる可能性はありますか?

また

次回ビューがロードされたときに新しいデータを要求するように、サービス内の promise をリセットするにはどうすればよいですか?

4

2 に答える 2

2

これらは相互に排他的な質問ではありません。を使用したルーティングでngViewは、ロードごとにビュー、スコープ、コントローラーが破棄されるため、コントローラーとスコープの履歴はルート間で保持されません。そうしないと、ブラウザのメモリ負荷が高くなります。代わりに、サービスを使用して、すべてのルートで必要な状態を維持できます。

$httpcacheオプションが有効になっていない限り、リクエストは呼び出されるたびに新しく作成されます。これが設計どおりに機能するために必要な作業はありません。

.factory( 'dataService', function( $http ) {
  return function dataServiceFn ( id ) {
    return $http.get( '/myapi', { params: { id: id } } );
  };
});

データ サービスが呼び出されると (例: dataService( $routeParams.id );)、新しい promise が返されます。

これは信じられないほど単純なケースのサービス構造のサンプルにすぎ$httpませんが、各サービス呼び出しで呼び出しが新しく行われる限り、毎回新しいデータを保証する新しい promise が得られます。

于 2013-04-04T23:55:29.873 に答える
1

別のコントローラーに移動すると、Angular はコントローラーをアンロードします。異なるビュー間でデータを保存する必要がある場合は、(コントローラーが変更されてもアンロードされない) サービス内にデータを保存するか、ビューをロードするたびに $http リクエストを行う準備をする必要があります。

于 2013-04-04T23:54:53.180 に答える