Tôi muốn đọc các giá trị của các tham số truy vấn URL bằng AngularJS. Tôi đang truy cập HTML bằng URL sau:
http://127.0.0.1:8080/test.html?target=bob
Như mong đợi, location.search
là "?target=bob"
. Để truy cập giá trị của mục tiêu , tôi đã tìm thấy các ví dụ khác nhau được liệt kê trên web, nhưng không có ví dụ nào hoạt động trong AngularJS 1.0.0rc10. Cụ thể, sau đây là tất cả undefined
:
$location.search.target
$location.search['target']
$location.search()['target']
Bất cứ ai biết những gì sẽ làm việc? (Tôi đang sử dụng $location
làm tham số cho bộ điều khiển của mình)
Cập nhật:
Tôi đã đăng một giải pháp bên dưới, nhưng tôi không hoàn toàn hài lòng với nó. Tài liệu tại Hướng dẫn dành cho nhà phát triển: Dịch vụ góc: Sử dụng vị trí $ nêu các điều sau về $location
:
Khi nào tôi nên sử dụng vị trí $?
Bất cứ lúc nào ứng dụng của bạn cần phản ứng với thay đổi trong URL hiện tại hoặc nếu bạn muốn thay đổi URL hiện tại trong trình duyệt.
Đối với kịch bản của tôi, trang của tôi sẽ được mở từ một trang web bên ngoài với tham số truy vấn, vì vậy tôi không "phản ứng với thay đổi trong URL hiện tại" mỗi lần. Vì vậy, có lẽ $location
không phải là công cụ phù hợp cho công việc (đối với các chi tiết xấu, xem câu trả lời của tôi dưới đây). Do đó, tôi đã thay đổi tiêu đề của câu hỏi này từ "Cách đọc tham số truy vấn trong AngularJS bằng cách sử dụng $ location?" thành "Cách ngắn gọn nhất để đọc các tham số truy vấn trong AngularJS là gì?". Rõ ràng là tôi chỉ có thể sử dụng javascript và biểu thức chính quy để phân tích cú pháp location.search
, nhưng việc sử dụng mức độ thấp đó cho một cái gì đó rất cơ bản thực sự xúc phạm sự nhạy cảm của lập trình viên của tôi.
Vì vậy: có cách nào tốt hơn để sử dụng $location
hơn tôi trong câu trả lời của tôi, hoặc có một cách thay thế ngắn gọn?
http://127.0.0.1:8080/test.html#?target=bob
sẽ làm việc, thông báo #
trước ?
. $location
là một phương thức định tuyến cấp hai không được gửi đến máy chủ.
$location.search()['target']
hoạt động sau khi $locationProvider.html5Mode(true)
đã được gọi trong một trình duyệt hiện đại.