2016-06-17 26 views
0

我已經使用服務將數據存儲在使用pouchDB的本地存儲中。我想顯示離子加載,直到數據下載並存儲在本地。現在我已經使用了超時,這對我來說不是一種選擇。我如何顯示離子加載,直到本地存儲填充到袋中

我的服務

function populateLocaldb() { 
     var count; 
     _localdb.info().then(function(d){ 
        console.log(d.doc_count) 
        count = d.doc_count; 

      if(count===0) { 
       populateData1(); 
       populateData2(); 
       populateData3(); 
      } else { 

      }   
     }); 
    } 
function populateChapter() { 
     $http.get('http://....').success(function(data) { 
        //console.log(data) 
        var values= data; 
        for(var i=0; i<values.length; i++) {    
         var value= { 
           _id: values[i].ID,   
           title: chapters[i].Title 
          } 
           _localdb.put(value, function callback(err, result) { 
            if (!err) { 
             console.log('Successfully posted a value!'); 
            } 
            }); 

        } 
       }) 
    } 

控制器

dbService.getAllinfo().then(function(data) { 
    if(data == ""){ 
     //do nothing 
     //alert(" null Alert hello") 
     console.log(data) 
     $ionicLoading.show({ 
     content: 'Loading', 
     animation: 'fade-in', 
     showBackdrop: true, 
     maxWidth: 200, 
     showDelay: 0 
     }).then(function() { 
     dbService.populateLocaldb(); 
     }); 
    } else { 
     //do nothing 
    } 
    }) 

    $timeout(function() { 
    $ionicLoading.hide(); 
    }, 50000); 
+0

http://stackoverflow.com/questions/37788102/ionic-show-spinner-after-button-is-pressed/37812549#37812549檢查此答案,您將其作爲您的願望 –

+0

我想調用$ ionicLoading.hide( )之後,我的服務將數據存儲在本地存儲中被調用。我試圖做他們,但我面臨的問題是離子加載代碼(顯示和隱藏)首先執行,然後只執行下載過程。我想顯示加載標誌,直到內容下載並存儲在本地存儲中,而不會超時。 – Naruto

回答

1

看起來你可能需要調用$scope.$apply()在PouchDB回調。此外,另一個提示是:forEach()內部不是執行多個put()s,而是在PouchDB中執行單個bulkDocs()操作時效率更高。

相關問題