angular路由緩存
⑴ angularJs ui-router路由之多視圖實現菜單緩存切換
**
**
一個模板中存在多個ui-view,每個ui-view都存在唯一的名稱作為標識,通過v-show來判斷當前的ui-view是否顯示,實現如下圖效果
以上可以實現基本的菜單切換,但是需要注意的是:
1.每個頁面模塊的controller的命名不能相同,否則會出現調用方法的混亂,可能會進入到另一個同名的controller中調用方法;
2.當使用此方法對頁面進行緩存,如果打開多個模塊用到websocket接受伺服器消息時,不能使用WebSocket.onmessage監聽和接受伺服器消息,否則可能會調用其他controller中WebSocket.onmessage,當前的頁面模塊就會監聽不到伺服器消息,這時我們可以使用
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
進行伺服器消息的監聽,並在方法體內做判斷,是否是當前頁面需要的。
3.如果某個頁面的彈出框用到了路由調用則彈框中的頁面不會顯示,所以建議不要在彈框中直接調用路由載入頁面,或者可以在index.jsp中:
4.如果幾個模塊views裡面的name一樣,則會出現載入的頁面重復的問題;
5.style樣式:如果多個模塊存在相同名稱的選擇器,則樣式會沖突;
還有些問題會在後面慢慢補充。
6.頁面打開太多會出現卡頓現象
7.一定要引入 <script src="vendor/angular/angular-ui-router-ext/ct-ui-router-extras.min.js"></script> ,否則會出現ui-view沒有緩存的情況
⑵ 怎麼清楚angular的js文件緩存
1如果用AngularJs在IE下發出GET請求從後台服務取完Json數據再綁定到頁面上顯示的話,你可能會發現就算數據更新了,IE還是會顯示原來的結果。實際上這時候IE的確是緩存了hashtag,沒有再次去做Http GET請求最新的數據。
2最直接的辦法是在後台擼掉OutputCache,但這種做法並不推薦,需要改每一處被Angular調用的地方,代價太大。這種問題應該在前端解決最好。研究了一會兒總結了最有效的解決方法,並不需要改後台代碼了。