您提到的文章很旧并且已讨论过多页模型,当您使用单页模型。 MPM 和 SPM 中操作页面所遵循的技术有所不同。
pagecontainer 小部件是在 jQM 1.4 中引入的;它很方便,但需要更多的编码和试错过程。注意pagebeforechange
已折旧并替换为pagecontainerbeforechange
。此外,该事件触发两次并返回almost相同的数据,如下:
- 第一次回归
.toPage
字符串形式的值
- 第二次
.toPage
是一个对象
鉴于上述情况,您必须根据要检索的数据以及是否要对上一页或下一页进行更改来决定何时运行代码。
在 jQM 的页面之间传输和检索数据的方法有很多。例如,数据可以在 jQM pagecontainer 事件中传递,请求参数 https://stackoverflow.com/a/26393037/1771795、本地存储...等
就您而言,您想通过object更改页面时。
$.mobile.pageContainer.pagecontainer( "change", "pageB.html", { objectA: objA } );
Since pagecontainerbeforechange
每次页面更改时都会触发,您必须添加一些条件以防止代码在事件触发时运行。另外,还要确定发出的数据是否是string
or an object
.
$( document ).on( "pagecontainerbeforechange" , function(e, data) {
if (typeof data.toPage === "object" &&
data.options.target === "pageB.html" &&
data.options.objectA !== "") {
var objectA = data.options.objectA, /* object passed */
targetPage = data.toPage; /* page you navigated to (jQuery object) */
targetPage.find( ".foo" ).text( "objectA.bar" );
}
});
一旦您拥有数据对象和导航到的页面对象,就可以进行所需的更改。
Demo http://plnkr.co/edit/1dpn0nAb4NLeB7wZueFJ