【问题标题】:OnsenUi getCurrentPage() gives empty objectOnsenUi getCurrentPage() 给出空对象
【发布时间】:2015-07-30 16:49:37
【问题描述】:

我正在使用 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() 方法发回数据并从 search-city.html 导航:

navi.popPage({ animation: 'lift' , data: 'something'});

我尝试使用 postpop 事件处理程序在我的主页控制器中获取数据:

navi.on('postpop', function(event) {
  var page = navi.getCurrentPage();
  console.log('popped');
  console.log(page);
});

问题是我上面显示的页面是空的。为什么我的主页在页面堆栈中是空的?初始化后也是空的,运行getCurrentPage()

我做错了吗?有没有更好的方法在页面之间传递对象?我更喜欢 jQuery,对 AngularJS 不熟悉。

这是关于 ons-navigation 的文档:http://onsen.io/reference/ons-navigator.html#method-popPage

抱歉,帖子太长了。

【问题讨论】:

    标签: javascript jquery angularjs cordova onsen-ui


    【解决方案1】:

    我认为,如果您将主要的ons-page 直接放在导航器中,则该页面将没有名称(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>
    

    希望对你有帮助!

    【讨论】:

    • 感谢您的快速回答!我尝试了您的建议,但问题是我的 var page = navi.getCurrentPage(); 抛出 navi is not defined 错误,所以我无法访问我的导航器。
    • 对不起,我忘了把 main-page="navigator.html" 放在我的菜单上。有用!谢谢!
    【解决方案2】:

    使用navigator.topPage.id获取当前页面的id

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2018-06-28
      • 2019-11-10
      • 2018-09-25
      • 2012-07-08
      • 2017-11-16
      • 2018-03-28
      • 2021-02-12
      • 2020-07-14
      相关资源
      最近更新 更多