ด้วย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
}
คำถามคือทำไมความแตกต่าง? และมีแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับเวลาและเหตุผลที่คุณควรใช้หรือหลีกเลี่ยงการใช้อย่างใดอย่างหนึ่ง