を使用すると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
}
問題は、なぜ違いがあるのか、です。また、いつどのような理由で使用する必要があるか、またはどちらも使用しないようにするためのベストプラクティスガイドラインはありますか?