Angularjsを使用してURLでビューの状態を保存します
-
21-12-2019 - |
質問
Angularjs
のURLの一部としてビュー状態を保存する上で一般的なもの(いずれかの場合)合意とは何ですか。私はビューの状態になるように、多くのフィルタ、タブなどを持つかなり複雑なビュー/ルートがあります。
これらのビューコンポーネントの状態をアプリケーション内のより簡単なナビゲーションでURLの一部として保存するという利点を確認します(back
のナビゲートは、サーバーからの状態をロードせずに行われたすべての選択で前のビューを復元することになります)。代替案である。もう1つの利点は、ビュー状態がブックマーク可能になることです。
ガイダンスに使用できるパターンはありますか?誰もがこれまでにやったことがあり、いくつかの経験を共有することができますか?URLのビュー状態を保存することから離れている必要がありますか?
解決
必要なデータが{key
、value
}に血清を変更できる場合は、 $location.search()
app.controller("myCtrl", function ($scope, $location, $routeParams) {
// Load State
var savedState = $location.search();
allProperties.forEach(function (k) {
if (typeof savedState[k] !== 'undefined') {
$scope.model[k] = savedState[k];
} else {
$scope.model[k] = defaultValues[k];
}
});
// Save the parameters
$scope.createUrlWithCurrentState = function() {
allProperties.forEach(function (k) {
$location.search(k, $scope.model[k]);
});
});
})
.
createUrlWithCurrentState
を持つ各ng-change
要素のinput
を使用してng-model
を呼び出すことができ、各変更で済みます。
ng-click
とCreate a link to this page
を更新して、必要なすべてのパラメータを保存するように保存する必要があります。
このが行われるべきかどうかに関しては、答えはあなたのユースケースによって異なります。リンクの共有を許可しなければならない場合は、URLに状態を保持するための代替手段が非常に少なくあります。
しかし、いくつかの状態はシリアル化やデータがもちょうどのようにURL に保存するのは長いです。
現在のセッションまたはブラウザのみの取得情報を保存したい場合は、 allProperties
または DOMストレージAPI