參考:
簡介
$location服務解析在瀏覽器地址欄中的URL(基於window.location)並且讓URL在你的應用中可用。改變在地址欄中的URL會作用到$location服務,同樣的,改變$location服務也會改變瀏覽器的地址欄。(可以使用$location進行重定向等操作)
$location服務:
暴露瀏覽器地址欄中的URL,讓你可以:
- 監察URL。
- 改變URL。
與瀏覽器同步URL,當:
- 改變地址欄。
- 單擊『前進』『后退』或一個歷史記錄中的鏈接。
- 打開一個鏈接。
- 將URL對象表示為一個方法集。 (protocol, host, port, path, search, hash)
服務依賴:
- $browser
- $sniffer
- $rootElement
內置方法:
- absUrl( ):只讀;根據在RFC 3986中指定的規則,返回url,帶有所有的片段。
- hash( ):讀、寫;當帶有參數時,返回哈希碎片;當在帶有參數的情況下,改變哈希碎片時,返回$location。
- host( ):只讀;返回url中的主機路徑。
- path( ):讀、寫;當沒有任何參數時,返回當前url的路徑;當帶有參數時,改變路徑,並返回$location。(返回的路徑永遠會帶有/)
- port( ):只讀;返回當前路徑的端口號。
- protocol( ):只讀;返回當前url的協議。
- replace( ):如果被調用,就會用改變后的URL直接替換瀏覽器中的歷史記錄,而不是在歷史記錄中新建一條信息,這樣可以阻止『后退』。
- search( ):讀、寫;當不帶參數調用的時候,以對象形式返回當前url的搜索部分。
- url( ):讀、寫;當不帶參數時,返回url;當帶有參數時,返回$location。
內置事件:
- $locationChangeStart:在URL改變前發生。這種改變可以通過調用事件的preventDefault方法為阻止。查看ng.$rootScope.Scope#$on獲得更多的細節。成功時觸發$locationChangeSuccess事件。
- $locationChangeSuccess:當URL改變后發生。
使用
何時使用$location
任何你想要改變當前URL的時候,都可以使用$location。
$location不會做
當瀏覽器的URL改變時,不會重新加載整個頁面。如果想要重新加載整個頁面,需要使用$window.location.href。