[解決済み] `ui-router` $stateParams vs. $state.params
2022-02-13 01:09:32
質問
と
ui-router
のどちらかを注入することができます。
$state
または
$stateParams
をコントローラに追加することで、URL 内のパラメータにアクセスできるようになります。しかし、パラメータへのアクセスは
$stateParams
は、アクセスしたコントローラが管理するステートとその親ステートに属するパラメータのみを公開するのに対し
$state.params
には、子状態を含むすべてのパラメータがあります。
以下のコードで、URL を直接読み込むと
http://path/1/paramA/paramB
のように、コントローラを読み込むと、このようになります。
$stateProvider.state('a', {
url: 'path/:id/:anotherParam/',
controller: 'ACtrl',
});
$stateProvider.state('a.b', {
url: '/:yetAnotherParam',
controller: 'ABCtrl',
});
module.controller('ACtrl', function($stateParams, $state) {
$state.params; // has id, anotherParam, and yetAnotherParam
$stateParams; // has id and anotherParam
}
module.controller('ABCtrl', function($stateParams, $state) {
$state.params; // has id, anotherParam, and yetAnotherParam
$stateParams; // has id, anotherParam, and yetAnotherParam
}
問題は、なぜこのような違いがあるのか、ということです。また、いつ、なぜ、どちらを使うべきか、あるいは使わないべきかについて、ベストプラクティスのガイドラインはあるのでしょうか?
どのように解決するのか?
ドキュメントには、ここで発見したことが繰り返し書かれています。 https://github.com/angular-ui/ui-router/wiki/URL-Routing#stateparams-service
私の記憶が確かなら
$stateParams
よりも後に導入された
$state.params
を書き続けることを避けるための単純なヘルパーインジェクターと思われる。
$state.params
.
ベストプラクティスのガイドラインがあるわけではありませんが、私にとっては文脈が優先されます。単にurlに受け取ったparamsにアクセスしたいだけなら
$stateParams
. 状態そのものについて、もっと複雑なことを知りたい場合は
$state
.
関連
-
[解決済み】Angularjsのng-viewが動作しない。
-
[解決済み] ページロード時にAngularJSのコントローラ関数を実行する方法は?
-
[解決済み] Angular JS $locationChangeStart 次の url ルートオブジェクトを取得する
-
[解決済み] AngularJSのシンプルな "Hello, world "が動作しない。
-
[解決済み] エラーです。[$injector:unpr] 不明なプロバイダです。ルートプロバイダ
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
[解決済み] AngularJSで画像を表示する
-
[解決済み] Angularjsを使用してローカルストレージにデータを保存するにはどうすればよいですか?
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み】現在の状態を再読み込みする方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSで$httpリクエスト中にスピナーGIFを表示する?
-
[解決済み] AngularJSのグローバル変数
-
[解決済み] AngularJSのng-showとフェードアニメーション
-
[解決済み] Angular UI-Routerのマルチビュー
-
[解決済み] エラーです。10回の$digest()反復に達しました。動的なsortby述語で中断!?
-
[解決済み] 新しい/分離されたスコープを求める複数のディレクティブ [ngController, ...] がある。
-
[解決済み] angularjsで$compileを操作する
-
[解決済み] controllerAs "プロパティを使用する理由は何ですか?
-
[解決済み] なぜAngularJSはselectに空のオプションを含めるのですか?
-
[解決済み] ng-repeat :単一フィールドによるフィルタリング