으로 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
}
문제는 왜 차이가 있는가? 그리고 그 중 하나를 사용해야하는시기와 이유에 대한 모범 사례 지침이 있습니까?