OnsenUi getCurrentPage() 给出空对象
OnsenUi getCurrentPage() gives empty object
我正在构建一个带有 Onsen 的混合移动应用程序 UI,但我在两个页面之间导航和传输数据时遇到了问题。我的起始页是 index.html,它包含一个 main.html ons-template 和一个 ons-navigation 以及一个 ons-page 元素。 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>
我想通过 popPage() 函数的选项获取从 search-city.html 发回的数据,但是当我尝试获取导航器的 currentPage 对象时,它给了我一个空页面没有名称和选项的对象。
在 chrome 控制台中:
Class {page: "", name: "", element: JQLite[1], pageScope: Object, options: Object…}
只有在尝试获取主页时才为空。另外,当我在 search-city.html 控制器中 运行 getPages() 时,第一页是空的,而 search-city.html 没问题:
Class {page: "search-city.html", name: "search-city.html", element: JQLite[1], pageScope: Object, options: Object…}
我尝试发回数据并使用 popPage() 方法从搜索-city.html 导航:
navi.popPage({ animation: 'lift' , data: 'something'});
然后我尝试使用 postpop 事件处理程序获取主页控制器中的数据:
navi.on('postpop', function(event) {
var page = navi.getCurrentPage();
console.log('popped');
console.log(page);
});
问题是页面是空的,如上所示。为什么我的主页在页面堆栈中是空的?初始化后也是空的,运行ning getCurrentPage()
我是不是做错了什么?有没有更好的方法在页面之间传递对象?我比较喜欢jQuery,不熟悉AngularJS。
这是关于 ons-navigation 的文档:http://onsen.io/reference/ons-navigator.html#method-popPage
抱歉这么久 post。
我想如果你把你的主要 ons-page
直接放在导航器中,那个页面将没有名称(ID 是不同的东西)并且将无法在 [=12] 中阅读它=] 对象。你可以只命名你的主页,我认为它会很好地工作:
<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
我正在构建一个带有 Onsen 的混合移动应用程序 UI,但我在两个页面之间导航和传输数据时遇到了问题。我的起始页是 index.html,它包含一个 main.html ons-template 和一个 ons-navigation 以及一个 ons-page 元素。 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>
我想通过 popPage() 函数的选项获取从 search-city.html 发回的数据,但是当我尝试获取导航器的 currentPage 对象时,它给了我一个空页面没有名称和选项的对象。
在 chrome 控制台中:
Class {page: "", name: "", element: JQLite[1], pageScope: Object, options: Object…}
只有在尝试获取主页时才为空。另外,当我在 search-city.html 控制器中 运行 getPages() 时,第一页是空的,而 search-city.html 没问题:
Class {page: "search-city.html", name: "search-city.html", element: JQLite[1], pageScope: Object, options: Object…}
我尝试发回数据并使用 popPage() 方法从搜索-city.html 导航:
navi.popPage({ animation: 'lift' , data: 'something'});
然后我尝试使用 postpop 事件处理程序获取主页控制器中的数据:
navi.on('postpop', function(event) {
var page = navi.getCurrentPage();
console.log('popped');
console.log(page);
});
问题是页面是空的,如上所示。为什么我的主页在页面堆栈中是空的?初始化后也是空的,运行ning getCurrentPage()
我是不是做错了什么?有没有更好的方法在页面之间传递对象?我比较喜欢jQuery,不熟悉AngularJS。
这是关于 ons-navigation 的文档:http://onsen.io/reference/ons-navigator.html#method-popPage
抱歉这么久 post。
我想如果你把你的主要 ons-page
直接放在导航器中,那个页面将没有名称(ID 是不同的东西)并且将无法在 [=12] 中阅读它=] 对象。你可以只命名你的主页,我认为它会很好地工作:
<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