2014-09-25 38 views
0

我工作的一個新的網站,該網站可以在建在這裏找到:http://srgunltd.co.uk「渴望」裝載AngularJS應用

我從WordPress JSON API提取數據,但如果你發現一些加載網頁時,有頁面出現和內容出現(通常爲1+秒)之間的延遲並不顯着。如果它不是AJAX驅動的,我可以忍受這一點,因爲這更突出了這個問題。所以爲了避免歧義,我的問題 - 是否有任何插件或AngularJS的做法,它允許「熱切」加載的內容,所以它可以在頁面加載之前隨時可用

+0

我覺得像一個智能緩存服務可能是最好的做法。這個功能似乎特定於角度來解決問題。由於你的應用程序的流程是完全特定的,因此框架無法知道什麼以及什麼不需要加載。 – tommybananas 2014-09-25 22:14:05

+0

現在閱讀緩存,你能提供任何有用的鏈接或例子嗎? – 2014-09-25 22:18:09

+0

切換到下面的答案.. – tommybananas 2014-09-25 22:36:29

回答

1

我不確定這個問題有沒有必要的「角度」解決方案。我認爲這將在應用程序體系結構下進行。我的第一個想法是你會使用一個服務並實現一個特定於你的需求的緩存系統。注意:可能有很酷的圖書館來幫助解決這類問題,但我更喜歡根據我的需求量身定製解決方案。

我會做這樣的事情,也許,但同樣,這是一個專用的事情:

function dataCacheService($http){ 

    var dataCache {}; 
    return { 
    // hooks to load data ahead of time 
    getPage1 : function(){ 
     var data = "Data from Api"; 
     dataCache['page1'] = data; 
    }, 
    getPage2 : function(){ 
     var data = "Data from Api"; 
     dataCache['page2'] = data; 
    }, 
    // a check to see if cached data is available 
    getCache = function(key){ 
     return dataCache[key] || false; 
    } 
    } 

} 

然後當你的控制器的負荷,你可以叫dataCacheService.getPage1()預加載數據。當用戶轉到需要該數據的頁面時,可以檢查它是否存在dataCacheService.getCache('page1')或正常加載。

function page1Ctrl($scope,$http,dataCacheService){ 

    // check to see if the data is cached or go get it 
    $scope.data = dataCacheService.getCache('page1') || getTheData(); 

    function getTheData(){ 
    //get it normally or whatever you need to do 
    } 

} 
0

如果你願意,你可以使用這個角度模塊的角度解決: http://chieffancypants.github.io/angular-loading-bar/

,但我認爲你必須改變你的代碼,成爲所有角爲本,讓您加載條模塊必須關聯到用角碼編寫的控制器。

我希望這可以幫助你。