ความแตกต่างระหว่าง $ state.transitionTo () และ $ state.go () ใน Angular ui-router


108

ใน AngularJS ผมเห็นบางครั้งที่เราใช้และบางครั้งที่เราใช้$state.transitionTo() $state.go()ใครช่วยบอกหน่อยได้ไหมว่ามันแตกต่างกันอย่างไรและควรใช้เมื่อใด

คำตอบ:


151

คุณหมายถึงเราเตอร์ 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()แนะนำในสถานการณ์ส่วนใหญ่


1
ฉันพบข้อมูลเพิ่มเติมที่ต้องการจากลิงค์ของคุณ ขอบคุณมากแบรนดอน :)
บาร์เซโลนา

1
เห็นได้ชัดว่าค่าที่ป้อนในมุมมองจะไม่ถูกลบออกหากฉันทริกเกอร์มุมมองใหม่โดยใช้การเปลี่ยนไปยัง อย่างไรก็ตามเราสามารถบังคับให้รีเฟรชค่า / js / view? PS - การโหลดหน้าซ้ำไม่ใช่ตัวเลือกเนื่องจากมุมมองเป็นภาพซ้อนทับ
Swanidhi

10

$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');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.