2014-06-12 16 views
19

Tôi muốn chuyển hướng người dùng đến trang khác sau khi đăng nhập thành công bằng chuỗi truy vấn. Nếu tôi sao chép & dán vào thanh địa chỉ của trình duyệt http://example.com/#/login?ref=/path/to/redirect nó hoạt động tốt. Nhưng nếu tôi sử dụng

$location.path("/login?ref=/path/to/redirect"); 

url trông giống như

http://example.com/#/login%3Fref=/path/to/redirect 

Làm thế nào tôi có thể giải mã% 3F để '?' ? Cảm ơn

+0

Bạn đang sử dụng ui-router? bạn có thể làm $ state.go ('state', {ref: 'params'} và chuyển vào chuỗi truy vấn. –

+3

Xem tại đây: http://stackoverflow.com/questions/15197837/how-to-pass -question-mark-in-url-javascript – Andy

+0

Cảm ơn @Andy nó hoạt động! – aikutto

Trả lời

42

Nó phải là

$location.path('/login').search('ref', '/path/to/redirect') 
+2

tiếc là điều này không hoạt động nếu bạn có reloadOnSearch được đặt thành false trên tuyến đường. Tôi nên mở và phát hành trong angular.js cho điều này nhưng bạn có một thay thế để thiết lập đường dẫn và truy vấn đồng thời (khác với thiết lập đối tượng vị trí trực tiếp mà sẽ gây ra một tải lại đầy đủ) – parliament

+0

Điều gì xảy ra nếu bạn có một số thành phần phổ biến, không biết gì về truy vấn nội dung chuỗi? Làm thế nào bạn có thể vượt qua nó sau đó? – Eugene

0

tôi đã cùng một vấn đề.

Tôi muốn thay đổi đường dẫn và tìm kiếm cùng một lúc.

Có thể bằng cách làm này:

$location.$$search ={foo:'bar', buz:'buz'} 
$location.$$path = '/some/path' 
$location.$$compose() 

Nó không phải là tài liệu và nó có thể phá vỡ ở bất kỳ phiên bản góc cạnh mới.

Các vấn đề liên quan