Javascript OnsenUi getCurrentPage()提供空对象
我正在构建一个带有Onsen UI的混合移动应用程序,在两个页面之间导航和传输数据时遇到问题。我的起始页面是index.html,其中包含main.html ons模板、ons导航和ons页面元素。index.html的结构是:Javascript OnsenUi getCurrentPage()提供空对象,javascript,jquery,angularjs,cordova,onsen-ui,Javascript,Jquery,Angularjs,Cordova,Onsen Ui,我正在构建一个带有Onsen UI的混合移动应用程序,在两个页面之间导航和传输数据时遇到问题。我的起始页面是index.html,其中包含main.html ons模板、ons导航和ons页面元素。index.html的结构是: <body> <ons-sliding-menu main-page="main.html" menu-page="menu.html" side="left" type="reveal" var="menu"> </ons-sli
<body>
<ons-sliding-menu main-page="main.html" menu-page="menu.html" side="left" type="reveal" var="menu">
</ons-sliding-menu>
<ons-template id="main.html">
<ons-navigator var="navi">
<ons-page id="main-page" class="main-page" ng-controller="MainPage">
</ons-page>
</ons-navigator>
</ons-template>
</body>
它只有在尝试获取主页时才为空。另外,当我在search-city.html控制器中运行getPages()时,第一个页面为空,search-city.html正常:
Class {page: "search-city.html", name: "search-city.html", element: JQLite[1], pageScope: Object, options: Object…}
我尝试发回数据并使用popPage()方法从search-city.html导航:
我尝试使用Postop事件处理程序在主页的控制器中获取数据:
navi.on('postpop', function(event) {
var page = navi.getCurrentPage();
console.log('popped');
console.log(page);
});
问题是页面是空的,如我上面所示。为什么我的主页在页面堆栈中是空的?它在初始化后也是空的,运行getCurrentPage()
我做错什么了吗?有没有更好的方法在页面之间传递对象?我更喜欢jQuery,我不熟悉AngularJS
这是关于ons导航的文档:
很抱歉发了这么长的帖子。我认为如果您将主
页面直接放在导航器中,该页面将没有名称(ID有所不同),并且无法在currentPage
对象中读取它。您只需命名主页,我认为它会很好地工作:
<ons-sliding-menu main-page="navigator.html" menu-page="menu.html" side="left" type="reveal" var="menu">
</ons-sliding-menu>
<ons-template id="navigator.html">
<ons-navigator var="navi" page=main.html>
</ons-navigator>
</ons-template>
<ons-template id="main.html">
<ons-page id="main-page" class="main-page" ng-controller="MainPage">
</ons-page>
</ons-template>
希望有帮助 使用navigator.topPage.id
检索当前页面的id感谢您的快速回答!我尝试了你的建议,但问题是我的var page=navi.getCurrentPage()
throwsnavi未定义
error,因此我无法访问我的导航器。抱歉,我忘了在菜单上放置main page=“navigator.html”。它起作用了!非常感谢。
navi.on('postpop', function(event) {
var page = navi.getCurrentPage();
console.log('popped');
console.log(page);
});
<ons-sliding-menu main-page="navigator.html" menu-page="menu.html" side="left" type="reveal" var="menu">
</ons-sliding-menu>
<ons-template id="navigator.html">
<ons-navigator var="navi" page=main.html>
</ons-navigator>
</ons-template>
<ons-template id="main.html">
<ons-page id="main-page" class="main-page" ng-controller="MainPage">
</ons-page>
</ons-template>