【问题标题】:jQuery Mobile - how to force that page recreation - pagebeforecreate eventjQuery Mobile - 如何强制重新创建页面 - pagebeforecreate 事件
【发布时间】:2012-11-26 16:42:11
【问题描述】:

我有一个小型 jQuery 移动网站。

  • 都是单个.html文件
  • 它有一些编辑功能(查看、编辑、保存)
  • 所有工作都与ajax/json/web service

我的大部分页面都使用来自web service, via AJAX & JSON 的数据,所以我经常使用以下内容:

$(document).on( 'pagebeforecreate', '#monday', function() {

// do some stuff on before create, load data with AJAX

});

现在,我如何强制重新创建页面(pagebeforecreate 事件),以便再次运行内部的 AJAX(从服务器获取最新数据)?

【问题讨论】:

    标签: javascript jquery json jquery-mobile


    【解决方案1】:

    使用pageBeforeShow 而不是pageBeforeCreate

    来自jqmdocumentation,关于创作事件。

    请注意,这些事件只会在每个“页面”触发一次,而显示/隐藏事件则在每次显示和隐藏页面时触发。

    【讨论】:

      【解决方案2】:

      我建议创建一个函数,您可以在 pagebeforecreate 事件触发时以及您想要更新站点时调用它:

      function myUpdateFunc() {
          // load data w/ AJAX
      }
      
      $(document).on('pagebeforecreate', '#monday', function () {
          //do some stuff on `pagebeforecreate`
      
          myUpdateFunc();
      });
      

      现在您可以从声明的范围内的任何位置调用myUpdateFunc() 函数。

      另外,您可以使用.trigger() 触发事件,在事件的事件处理程序中运行代码:

      $('#monday').trigger('pagebeforecreate');
      

      【讨论】:

        【解决方案3】:

        使用此代码强制重新创建/刷新页面:

        function refreshPage() {
          $.mobile.changePage(
            window.location.href,
            {
              allowSamePageTransition : true,
              transition              : 'none',
              showLoadMsg             : false,
              reloadPage              : true
            }
          );
        }
        

        here 获取和测试。

        【讨论】:

        • 这使我的网站返回登录屏幕。
        • 将 window.location.href 更改为您的页面 id,例如:'#page'
        • 这也是一个很好的提示如何更改默认的后退按钮目的地。
        • 是的,但如果是后退按钮,请使用此行:$.mobile.changePage("#page", {transition: "none");也可以使用任何你想要的过渡
        猜你喜欢
        • 1970-01-01
        • 2015-04-04
        • 2014-09-20
        • 2018-11-12
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多