Javascript OnsenUi getCurrentPage()提供空对象

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

我正在构建一个带有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-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()
throws
navi未定义
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>