2

在我的 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);
 });
4

1 回答 1

1

通过尝试和错误,我注意到了问题的原因。在存储数据的页面中,我包含了 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() 成功获取了从第一页存储的数据。

于 2017-05-30T04:25:14.750 回答