1. 程式人生 > >AngularJs返回前一頁面時重新整理一次前面頁面

AngularJs返回前一頁面時重新整理一次前面頁面

               

要求:

頁面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(); });
本人技術差,暫時沒有更優化的辦法,只能用這種辦法進行全域性重新整理。如果進來看的大神們有好辦法,麻煩留言告訴我哦!謝謝!