angularJS: $location 服務
記錄下今天的學習筆記:
$location服務:
- 解析地址欄的URL,讓用戶可以訪問應用當前路徑所對應的路由。
- 可修改路徑、處理各種形式導航。
$location服務對javascript中的window.location對象的API進行了更優雅的封裝,並且和angularJS集成在一起。
使用$location服務的最佳場景是:當應用需要在內部進行跳轉時候。如:用戶註冊、修改、或登錄後進行的跳轉。
$location服務並不刷新整個頁面。刷新整個頁面使用:$window.location對象(window.location的一個接口)
1. path() - 獲取頁面當前路徑:
$location.path(); //返回當前路徑
$location.path(‘/‘); //修改路徑為‘/‘路由,並跳轉
path()方法直接和H5的歷史API進行交互,所以用戶可通過點擊後退按鈕退回到上個頁面。
2. replace() - 禁止用戶跳轉後點擊後退按鈕。(如用戶登錄後)
$location.path(‘/home‘);
$location.replace();
或者:
$location.path(‘/home‘).replace();
3. absUrl() - 獲取編碼後的完整URL
$location.absUrl();
4. hash() - 獲取URL中的hash片段
$location.hash(); // 返回當前的hash片段
5. host() - 獲取URL中的主機
$location.host();
6. port() - 獲取URL中的端口號
$location.port();
7. protocol() - 獲取URL中的協議
$location.protocol();
8. search() - 獲取URL中的查詢串
$location.search();
這個方法可傳入新的查詢參數,用來修改URL中的查詢串部分:
//用對象設置查詢:
$location.search({name: ‘Ari‘, username: ‘auser‘});
//用字符串設置查詢:
$location.search(‘name=Air&username=auser‘);
search方法可接收兩個可選參數:
- search(可選,字符串或對象) - 代表新的查詢參數。hash對象的值可以是數組
- paramValue(可選,字符串) - 如果search參數的類型是字符串,那麽paramValue會作為該參數的值覆蓋URL當中對應的值。如果paramValue的值是null,對應的參數會被移除。
9. url() - 獲取當前的URL:
$location.url();
調用url()方法時如果傳了參數,會設置並修改當前的URL,同時修改URL中的路徑、查詢串和hash,並返回$location。
//設置新的URL
$location.url(‘/home?name=Ari#hashthing‘);
方法可接收兩個參數:
url(可選,字符串) - 新的URL的基礎的前綴。
replace(可選,字符串) - 想要修改成的路徑。
angularJS: $location 服務