Dengan ui-router, dimungkinkan untuk menyuntikkan salah satu $stateatau $stateParamske pengontrol untuk mendapatkan akses ke parameter di URL. Namun, mengakses parameter melalui $stateParamshanya mengekspos parameter milik negara yang dikelola oleh pengontrol yang mengaksesnya, dan status induknya, sementara $state.paramsmemiliki semua parameter, termasuk yang ada di status turunan apa pun.
Diberikan kode berikut, jika kita langsung memuat URL http://path/1/paramA/paramB, begini jadinya ketika pengontrol memuat:
$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
}
Pertanyaannya adalah, mengapa berbeda? Dan apakah ada pedoman praktik terbaik tentang kapan dan mengapa Anda harus menggunakan, atau menghindari penggunaan salah satunya?