ฉันต้องการอ่านค่าของพารามิเตอร์การค้นหา 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)
ถูกเรียกในเบราว์เซอร์ที่ทันสมัย