ใน 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
: true
inherit
: true
relative
: $state.$current
notify
: true
reload
: false
สะดวกกว่าเนื่องจาก synthax ง่ายกว่า คุณสามารถเรียกได้ด้วยชื่อรัฐเท่านั้น
$state.go('home');