ใน AngularJS ผมเห็นบางครั้งที่เราใช้และบางครั้งที่เราใช้$state.transitionTo() $state.go()ใครช่วยบอกหน่อยได้ไหมว่ามันแตกต่างกันอย่างไรและควรใช้เมื่อใด
ใน AngularJS ผมเห็นบางครั้งที่เราใช้และบางครั้งที่เราใช้$state.transitionTo() $state.go()ใครช่วยบอกหน่อยได้ไหมว่ามันแตกต่างกันอย่างไรและควรใช้เมื่อใด
คำตอบ:
คุณหมายถึงเราเตอร์ AngularUIหรือไม่? ถ้าเป็นเช่นนั้น wiki จะระบุความแตกต่าง :
$ state.go (ถึง [, toParams] [, ตัวเลือก])
ส่งคืนสัญญาที่แสดงสถานะของการเปลี่ยนแปลง
วิธีการที่สะดวกสำหรับการเปลี่ยนไปสู่สถานะใหม่
$state.goโทร$state.transitionToภายใน{ location: true, inherit: true, relative: $state.$current, notify: true }แต่จะตั้งค่าตัวเลือกในการ สิ่งนี้ช่วยให้คุณใช้เส้นทางแบบสัมบูรณ์หรือสัมพันธ์กับเส้นทางได้อย่างง่ายดายและระบุเฉพาะพารามิเตอร์ที่คุณต้องการอัปเดต (ในขณะที่ปล่อยให้พารามิเตอร์ที่ไม่ระบุสืบทอดมาจากสถานะปัจจุบัน)
$ state.transitionTo (ถึง, toParams [, ตัวเลือก])
ส่งคืนสัญญาที่แสดงสถานะของการเปลี่ยนแปลง
วิธีการระดับต่ำสำหรับการเปลี่ยนไปสู่สถานะใหม่
$state.go()ใช้transitionToภายใน$state.go()แนะนำในสถานการณ์ส่วนใหญ่
$state.transitionToเปลี่ยนผ่านไปสู่สถานะใหม่ ในกรณีส่วนใหญ่ที่คุณไม่จำเป็นต้องใช้มันคุณอาจจะชอบ$state.go
ใช้พารามิเตอร์บางอย่างในoptionsวัตถุ:
location: หากtrueจะอัปเดต url ในแถบตำแหน่งหากfalseจะไม่ หากเป็นสตริง"replace"จะอัปเดต url และแทนที่บันทึกประวัติล่าสุดด้วยinherit: ถ้าtrueจะสืบทอดพารามิเตอร์ url จาก url ปัจจุบันrelative (stateObject, default null) : เมื่อเปลี่ยนด้วยพา ธ สัมพัทธ์ (เช่น '^') ให้กำหนดสถานะที่จะสัมพันธ์กันnotify: ถ้าtrueจะออกอากาศ$stateChangeStartและ$stateChangeSuccessกิจกรรมต่างๆreload: ถ้าtrueจะบังคับให้เปลี่ยนแม้ว่าสถานะหรือพารามิเตอร์จะไม่เปลี่ยนแปลงหรือที่เรียกว่าการโหลดซ้ำของสถานะเดียวกัน$state.goเป็นทางลัดประเภทหนึ่งที่เรียก$state.transitionToด้วยตัวเลือกเริ่มต้น:
location: trueinherit: truerelative: $state.$currentnotify: truereload: falseสะดวกกว่าเนื่องจาก synthax ง่ายกว่า คุณสามารถเรียกได้ด้วยชื่อรัฐเท่านั้น
$state.go('home');