【问题标题】:jquery mobile page isn't working with localstoragejquery 移动页面不适用于本地存储
【发布时间】:2014-12-24 09:56:24
【问题描述】:

电话夹

jquery 移动

无法在 Chrome 浏览器或 iOS 上运行。

我正在尝试实现“最近历史记录”功能,如果用户访问页面,页面标题将存储在 localStorage 中,然后再检索。

我在页面上有一个按钮,单击该按钮会向本地存储添加一个(键,值)。

$(document).on('tap','#getMeThere',function(){
var title = $('#serviceTitle').text();
var duplicate = false;
for (var i = 0; i < window.localStorage.length; i++){//check if service is already in storage
   if(window.localStorage.getItem(window.localStorage.key(i)) == title){
    duplicate = true;
    break;
   }
}

if(duplicate == false){//does not exist in array
    window.localStorage.setItem(title,title); //add to local storage
}
});

我在另一个页面上有另一个按钮,单击该按钮时会加载一个新页面并在列表视图中显示 localStorage 中的所有项目。

$(document).on('pagebeforecreate', '#recent', function(){//display services that user has visited

    if(window.localStorage.length == 0){
    console.log('local storage length=' + window.localStorage.length);
    $('#recentEmpty').text("You haven't visited any services yet! Any services you visit will     show up on this page.");
}
else{
for (var i = 0; i < window.localStorage.length; i++){
 $("#recentList").append($("<li><a href='#ymca' data-transition='slide'>YMCA</a></li>"));
}
     console.log('local storage length=' + window.localStorage.length);
}
});

案例 1:问题是如果我打开我的应用程序。我单击第二个按钮,以查看“您尚未访问...”。没关系。然后我转到另一个页面并单击第一个按钮向 localStorage 添加一个值。当我再次单击第二个按钮时,我应该看到一个列表项,但我仍然看到“您尚未访问”。即使我在检查元素时可以看到 localStorage.setItem 成功并且 localStorage 中有 1 个值。我需要刷新浏览器才能看到列表项。

案例 2:我打开我的应用程序,单击第一个按钮添加到存储,然后单击第二个按钮显示它,我最近的历史记录页面正确显示 1 个列表项,无需刷新。

这似乎是某种缓存问题。或者我可能需要以某种方式刷新页面?

【问题讨论】:

  • 按钮ID重复?是否在所有页面中使用?

标签: jquery-mobile cordova local-storage


【解决方案1】:

您正在使用pagebeforecreate,它在页面创建之前运行,只发生一次。你可能想要pagebeforeshow

【讨论】:

  • 好的,谢谢。现在的问题是列表只显示一个文本链接,而不是列表视图项内的文本链接。
  • 当您修改 JQM 项目时,例如列表视图,您必须对其调用 refresh() 以使其美观。有关更多信息,请参阅 JQM 文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
相关资源
最近更新 更多