我使用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 :(得分:1)
看起来您可能需要在PouchDB回调中调用$scope.$apply()
。另外,另一个提示:不是在put()s
内部执行多个forEach()
,而是在PouchDB中执行单个bulkDocs()
操作的效率更高。