AngularJs返回前一頁面時重新整理一次前面頁面
阿新 • • 發佈:2018-12-21
要求:
頁面A進入到頁面B,在頁面B處理完後返回頁面A,頁面A裡的資料應該動態的減去一條,但由於一般情況下頁面是快取起來的,返回A後讀取的是快取靜態頁面,裡面顯示的資料不會減少。應客戶要求,需要重新載入一次資料,達到頁面A可以重新整理資料目的。
研究過程:
從網上尋找發現,有一個方法可以獲取到當前頁面的URL:$location
以 ‘http://localhost/$location/21.1%20$location.html#/foo?name=bunny#myhash’ 這個路徑為例:
1. 獲取當前完整的url路徑:
$location.absUrl():// http://localhost/$location/21.1%20$location.html#/foo?name=bunny#myhash
2. 獲取當前url路徑(當前url#後面的內容,包括引數和雜湊值):$location.url();// /foo?name=bunny#myhash
3. 獲取當前url的子路徑(也就是當前url#後面的內容,不包括引數):$location.path()// /foo
4. 獲取當前url的協議(比如http,https)$location.protocol()// http
5. 獲取當前url的主機名$location.host()// localhost
6. 獲取當前url的埠
$location.port()// 80 (這裡就是wamp的預設埠號)
獲取到當前頁的URL後,把它賦給全域性變數,當URL變化時,重新整理前一頁面即可parent.location.reload(); //該方法可用於重新整理前面所以頁面
之後繼續在網上找有沒有更好的辦法,發現了一個可以直接使用的方法:這兩個事件分別發生在當url開始發生改變,以及url改變完成.他們都被繫結在$rootScope裡面:
$rootScope.$on('$locationChangeStart',function(){ console.log('開始改變$location')});$rootScope.$on('$locationChangeSuccess',function(){ console.log('結束改變$location')});
之後寫進程式碼裡做了驗證,驗證結果可用。寫法為:$rootScope.$on('$locationChangeSuccess' ,function(){//返回前頁時,重新整理前頁 parent.location.reload(); });
本人技術差,暫時沒有更優化的辦法,只能用這種辦法進行全域性重新整理。如果進來看的大神們有好辦法,麻煩留言告訴我哦!謝謝!