2014-06-14 8 views
0

我显然在理解jquerymobile中的页面转换时遇到了一些麻烦。了解jQuerymobile导航模型(如何在更改页面时清除所有状态)

看来,当我从一个页面导航到另一个页面(通过一个简单的锚点href或$ .mobile.navigate),一些状态就会被传递。

例如,假设我声明一个变量,像这样第1页的脚本代码中:

<script> 
    var randomVar = 'abcd'; 
</script> 

然后第2页,我有以下脚本标签:

<script> 
    console.log(randomVar); 
</script> 

如果我直接进入第2页,然后在控制台上显示一个错误: “Uncaught ReferenceError:randomVar is not defined”。 这是我的预期行为。

但是,如果我转到第1页,然后导航到第2页,控制台将打印“abcd”。所以看起来第1页的状态/变量正在传递到第2页。

我想要阻止这种情况。在进行此转换时是否有办法清除所有状态? 虽然我只想要这个特定的页面转换。我有导航到其他页面是模态,但我希望他们有页1的状态。

我可能会考虑整个jQM导航错误,所以请纠正我,如果我是。

谢谢

+0

JQM中的页面共享相同的DOM。只要启用Ajax并且使用单页或多页模型,在页面之间导航时它不会更改。你需要做的是清除'pagecontainerhide'上的变量。 – Omar

+0

谢谢奥马尔。我想我无法清除正确的变量,或者它不是我想要澄清的变量。这里有我的问题,如果你可以帮助更好的描述:http://stackoverflow.com/questions/24235047/cant-access-elements-after-jquerymobile-page-change – kane

回答

0

jQuery Mobile使用Ajax加载页面。当你直接去那里,整个页面被加载(所以没有保存状态)。当你点击一个页面进行浏览时,jQuery Mobile接管并通过Ajax加载新页面。由于页面没有改变,它的状态是一样的(它并不真正“保留它”,它只是让事情保持原样)。

您的选择是挂入jQuery Mobile Events之一,如pagechange,并根据需要重置/修改任何变量或状态元素。

+0

你有一个建议,我应该绑定到哪个事件,因为在某些页面转换(弹出窗口模式)中,我想保持状态并在其他页面上(第2页),我不知道? 我是否使用类似pagehide的东西,并查看正在导航到的网址,还是有其他更容易? – kane

+0

'pagechange'? AFAIK,对话框不会触发pagechange事件。 –

+0

这似乎是正确的答案,虽然我仍然无法清除一些东西。当我更好地理解该问题时,我会发布另一个问题 – kane

相关问题