$ routeParams ไม่ทำงานในฟังก์ชั่นการแก้ไข


138

ฉันใช้เทคนิคนี้เพื่อโหลดข้อมูล ดังนั้นฉันได้สร้างฟังก์ชั่นการแก้ไขต่อไปนี้:

NoteController.resolve = {
    note: function($routeParams, Note) {
         return Note.get($routeParams.key);
    }
}

ปัญหาก็คือว่า$routeParams.keyเป็นundefinedช่วงเวลาของresolveการดำเนินการฟังก์ชั่น มันถูกต้อง / ข้อผิดพลาด? ฉันจะแก้ไขได้อย่างไร

คำตอบ:


273

คุณต้องใช้$route.current.params.keyแทน $routeParamsมีการปรับปรุงเฉพาะหลังจากที่เส้นทางที่มีการเปลี่ยนแปลง ดังนั้นรหัสของคุณควรดูตามบรรทัดเหล่านั้น:

NoteController.resolve = {
    note: function($route, Note) {
         return Note.get($route.current.params.key);
    }
}

7
ขอบคุณ! เหตุใดฉันจึงต้องใช้ $ routeParams
fedor.belov

2
ฉันเดาว่าdocs.angularjs.org/api/ng.$routeParamsเป็น API ที่ดีเมื่อมีการจับคู่เส้นทางและเปลี่ยนแปลงแล้ว แต่มันเป็นความจริงว่ามันค่อนข้างสับสน ...
pkozlowski.opensource

1
คุณสามารถใช้$routeParamsภายในคอนโทรลเลอร์
meconroy

13
สำหรับผู้ที่ใช้ui-routerและมาที่นี่: $stateParamsเป็นหนทางไป
petrkotek

หากคุณใช้บางอย่างเช่นIonicเฟรมเวิร์กคุณจะใช้$stateParams.keyในฟังก์ชั่นการแก้ไขเนื่องจากใช้ui-routerเป็น @beret ที่กล่าวมา เอาฉันสักครู่ที่จะตระหนักถึง ..
ObjectiveTruth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.