ฉันต้องการอ่านค่าของพารามิเตอร์การค้นหา URL โดยใช้ AngularJS ฉันกำลังเข้าถึง HTML ด้วย URL ต่อไปนี้:
http://127.0.0.1:8080/test.html?target=bob
เป็นที่คาดหวังคือlocation.search "?target=bob"สำหรับการเข้าถึงคุณค่าของเป้าหมายฉันได้พบตัวอย่างต่าง ๆ ที่ระบุไว้บนเว็บ แต่ไม่มีพวกเขาทำงานใน AngularJS 1.0.0rc10 โดยเฉพาะอย่างยิ่งต่อไปนี้คือทั้งหมดundefined:
$location.search.target$location.search['target']$location.search()['target']
ใครรู้ว่าจะทำงานอย่างไร (ฉันใช้$locationเป็นพารามิเตอร์ในการควบคุมของฉัน)
ปรับปรุง:
ฉันโพสต์โซลูชันด้านล่าง แต่ฉันไม่พอใจกับมันทั้งหมด เอกสารที่คู่มือนักพัฒนาซอฟต์แวร์: บริการเชิงมุม: การใช้ $ locationระบุสิ่งต่อไปนี้$location:
ฉันควรใช้ตำแหน่ง $ เมื่อใด
เมื่อใดก็ตามที่แอปพลิเคชันของคุณต้องการตอบสนองต่อการเปลี่ยนแปลงใน URL ปัจจุบันหรือหากคุณต้องการเปลี่ยน URL ปัจจุบันในเบราว์เซอร์
สำหรับสถานการณ์ของฉันหน้าของฉันจะเปิดจากหน้าเว็บภายนอกพร้อมพารามิเตอร์การสืบค้นดังนั้นฉันจึงไม่ "ตอบสนองต่อการเปลี่ยนแปลงใน URL ปัจจุบัน" ต่อหนึ่งรายการ ดังนั้นอาจ$locationไม่ใช่เครื่องมือที่เหมาะสมสำหรับงาน (สำหรับรายละเอียดที่น่าเกลียดดูคำตอบของฉันด้านล่าง) ฉันได้เปลี่ยนชื่อของคำถามนี้จาก "วิธีอ่านพารามิเตอร์ข้อความค้นหาใน AngularJS โดยใช้ $ location" ถึง "วิธีรัดกุมที่สุดในการอ่านพารามิเตอร์ข้อความค้นหาใน AngularJS คืออะไร" เห็นได้ชัดว่าฉันสามารถใช้จาวาสคริปต์และการแสดงออกปกติเพื่อแยกวิเคราะห์location.searchแต่การที่ระดับต่ำสำหรับบางสิ่งบางอย่างเพื่อให้พื้นฐานจริงๆแล้วมันขัดกับความรู้สึกของโปรแกรมเมอร์
ดังนั้น: มีวิธีที่ดีกว่าที่จะใช้$locationกว่าที่ฉันทำในคำตอบของฉันหรือมีทางเลือกสั้นกระชับ?
http://127.0.0.1:8080/test.html#?target=bobการทำงานก็จะแจ้งให้ทราบก่อน# เป็นวิธีการกำหนดเส้นทางระดับที่สองซึ่งไม่ได้ถูกส่งไปยังเซิร์ฟเวอร์ ?$location
$location.search()['target']ทำงานหลังจากที่$locationProvider.html5Mode(true)ถูกเรียกในเบราว์เซอร์ที่ทันสมัย