[解決済み] Angular JS でビューを再レンダリングせずに URL を更新する
質問
AngularJSでダッシュボードシステムを構築しているのですが、URLの設定に
$location.path
ダッシュボードには、たくさんのウィジェットがあります。それぞれをクリックすると、より大きな最大化されたビューが表示されます。私たちは、ユーザーがウィジェットを最大化したダッシュボードにリンクできるように、ディープリンクを設定しようとしています。
現在、次のような 2 つのルートがあります。
/dashboard/:dashboardId
と
/dashboard/:dashboardId/:maximizedWidgetId
ユーザがウィジェットを最大化したとき、url を更新するために
$location.path
を使用していますが、これによってビューが再レンダリングされます。すべてのデータを持っているので、ビュー全体を再読み込みする必要はなく、URLだけを更新したいのです。ビューを再レンダリングさせることなくurlを設定する方法はありますか?
HTML5Mode
に設定されている
true
.
どのように解決するのですか?
実際には、urlを変更するたびにビューがレンダリングされます。これはAngularの$routeProviderがどのように動作するかを示しています。
maximizeWidgetId
をクエリ文字列として渡すことができ、これはビューを再レンダリングしません。
App.config(function($routeProvider) {
$routeProvider.when('/dashboard/:dashboardId', {reloadOnSearch: false});
});
ウィジェットをクリックして最大化したとき。
<a href="#/dashboard/1?maximizeWidgetId=1">Maximum This Widget</a>
or
$location.search('maximizeWidgetId', 1);
アドレスバーのURLは次のようになります。
http://app.com/dashboard/1?maximizeWidgetId=1
URL の検索が (あるウィジェットから別のウィジェットに) 変更されるのを監視することもできます。
$scope.$on('$routeUpdate', function(scope, next, current) {
// Minimize the current widget and maximize the new one
});
関連
-
[解決済み] Angular ng-repeat エラー "リピータ内の重複は許可されません。"
-
[解決済み] AngularJSの$parentは何を意味するのですか?
-
[解決済み] エラーです。10回の$digest()反復に達しました。動的なsortby述語で中断!?
-
[解決済み] Angularjsを使用してローカルストレージにデータを保存するにはどうすればよいですか?
-
[解決済み] AngularJSのコントローラを指定する:ngControllerと$routeProviderを使用する利点
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] AngularJSのコントローラからビューにHTMLを挿入する
-
[解決済み] なぜAngularJSはselectに空のオプションを含めるのですか?
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] AngularJSのサービスをコンソールからテストするにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】typeerrorは、未定義のプロパティ'data'を読み取ることができません。
-
[解決済み] Angular UI-Routerのマルチビュー
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] AngularJS の ng-disabled ディレクティブに式を指定しても動作しない
-
[解決済み] エラーです。[$injector:unpr] 不明なプロバイダです。ルートプロバイダ
-
angularjs統合ueditor入門
-
[解決済み] AngularJs .$setPristineでフォームをリセットする
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] なぜAngularJSはselectに空のオプションを含めるのですか?
-
[解決済み] AngularJSでコントローラをリロードせずにパスを変更することはできますか?