在我的index.html中,我使用
保存了一些数据localforage.getItem('data').then(function(value){
if (!value) {
localforage.setItem('data', ["test", "test test"]).then(function(value){
console.log(value); // this get's displayed on when the data is been created which is the first time the page is loaded.
}).catch(function(err){
console.log(err);
})
} else {
console.log(value); //after saving the value the first, it is always displayed here after page reloads
}
});
现在在我加载第一页后加载的第二页中,这意味着必须保存'数据',我尝试使用以下代码检索数据。
localforage.getItem('data').then(function(value){
console.log(value); // this prints null
}).catch(function(err) {
console.log(err);
});
答案 0 :(得分:0)
通过尝试和错误我注意到了问题的原因。在存储数据的页面内,我包含了localforage库和另一个带有以下代码的javascript文件(database.js)。
$(document).ready(function() {
const appName = "testApp";
const storeName = "test_db";
localforage.config({
name: appName,
storeName: storeName
});
localforage.getItem('data').then(function(value) {
if (!value) {
localforage.setItem('data', []).then(function(value) {
console.log(value);
}).catch(function(err) {
console.log(err);
});
}
})
});
然后我继续使用localforage.setItem()保存我的数据。在我的第二页中,我试图使用localforage检索存储在浏览器中的数据,但我没有包含此javascript。我只是包含了localforage库,我的猜测是当页面加载时,localforage创建一个具有不同名称的新商店。默认名称,因此我的localforage.getItem()正在查询没有保存数据的商店。包括database.js使localforage使用我使用localforage.config()配置的商店,现在在第二页中调用localforage.getItem()成功获取从第一页存储的数据。