28

angular jsの一部のキャッシュにいくつかのデータをロードし、ページのonrefreshでこれらのデータをキャッシュからロードして再度表示する方法はありますか?

現在の問題は、ページを更新するたびに、ページの更新時にすべての JS がリロードされるため、sharedServices アプリによって共有された詳細が再度開始されることです。

ログインページとホームページがあります。ログインが成功すると、$route を使用してホームページにルーティングし、loginID をホームページ コントローラーにブロードキャストします。このホームページを更新するか、URL をコピーして別のタブに貼り付けると、同じデータが存在するようになります。しかし、私の場合、htmls/javascripts がリロードされているため、null に初期化されています。

ここで利用可能な角度のテクニックはありますか?

4

1 に答える 1

34

この議論を見てください。

少量のデータ (<= 4k) の場合は$cookieStoreを使用できますが、その後はlocalStorageを調べる必要があります。localStorage はアプリを HTML5 準拠のブラウザーに関連付けることに注意してください。

バックエンドで多少の状態を気にしない場合は、それもオプションです。

最初のコメントに基づいて編集

あなたの目標は、ユーザーが更新を押したときに、ページがまったくヒットしていないように見えるようにすることです。これらが変更されるたびに、アプリケーション全体の状態を localStorage (スコープ、DOM プロパティ、ステートフル サービス) に永続化する必要があります。これが賢明かどうかはわかりません。

ただし、機能するのに十分近づくことができます。

上記の答えを拡張するには:

  • Angular の $route サービスを使用して、URL を使用してアプリケーションの状態を記述します。この記事はかなり Ember 固有のものですが、URL と状態を説明するこの記事をいつも気に入っています。

  • 更新時にクライアントがスクリプトをリロードするのを止める限り、それを行う方法はありません。最も近いのは、サーバーにそれらのスクリプトの 304 (Not Modified) コードを返すことです。

  • スコープ データとサービスの状態は、前述のようにローカル ストレージに保持する必要があります。

更新の問題は厄介ですが、実際には可能な限りステートレスに考えることを余儀なくされ、ステートレス コードは保守とテストがはるかに簡単です。あなたが上向きを探していた場合:)

于 2012-09-27T12:39:03.750 に答える