【问题标题】:How can I bind own data to the history object using JQuery Mobile?如何使用 JQuery Mobile 将自己的数据绑定到历史对象?
【发布时间】:2023-03-24 18:12:01
【问题描述】:

我正在寻找一种将我自己的应用数据(如currentQuestioncurrentAnswer)绑定到历史记录对象的好方法。

我试图跟踪hashchange 事件,但这变得复杂了。

我尝试使用 url 参数,但我希望拥有状态对象,其中包含历史堆栈上每个元素的一些条目,所以我必须有很多参数。

有没有办法将一个对象添加到历史堆栈中?

【问题讨论】:

    标签: javascript jquery jquery-mobile history


    【解决方案1】:

    如果您使用 jquery mobile ajax transition,您将可以访问所有页面上的 same 全局 jquery 对象,您可以将数据附加到它,例如在第一个您分配 currentQuestion 和 currentAnswer 的页面

    $.currentQuestion = 'something';
    $.currentAnswer = 'something';
    

    在下一页您可以轻松访问这些变量

    console.log($.currentQuestion);
    

    这就是我在 jquery mobile 内的页面之间移动数据的方式

    【讨论】:

    • 谢谢。但是对于堆栈上的每个位置,我都需要 currentQuestion 和 currentAnswer。
    • 是的,你可以创建一个数组 $.currentQuestions = new Array();并将数据推回内部
    【解决方案2】:

    我找到了路。您可以将变量插入历史堆栈:

            var urlh = $.mobile.urlHistory;
            if( "factId" in urlh.stack[urlh.activeIndex] ) {
    
                // load 
                cp10.score.currentFactId = urlh.stack[urlh.activeIndex].factId;
    
            } else {
    
                // store fact id in history object
                urlh.stack[urlh.activeIndex].factId = cp10.score.currentFactId;
            }
    

    在这里我插入一个变量“factId”。如果它不在堆栈元素中(页面第一次加载时会发生什么),则插入它。稍后(当用户点击后退按钮时)您可以从那里检索它。

    【讨论】:

      猜你喜欢
      • 2016-08-21
      • 2013-02-15
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多