İle ui-router
, URL'deki parametrelere erişmek için bir denetleyiciye $state
veya $stateParams
içine enjekte etmek mümkündür . Bununla birlikte, parametrelere $stateParams
yalnızca ona erişen denetleyici tarafından yönetilen duruma ve üst durumlarına ait parametreleri ortaya çıkarırken $state.params
, tüm alt durumlar dahil tüm parametrelere sahiptir.
Aşağıdaki kod göz önüne alındığında, URL'yi doğrudan yüklersek http://path/1/paramA/paramB
, denetleyiciler yüklendiğinde böyle olur:
$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
}
Soru şu ki, fark neden? Ve ne zaman ve neden kullanmanız gerektiği veya bunlardan herhangi birini kullanmaktan kaçınmanız gerektiği konusunda en iyi uygulama yönergeleri var mı?