【问题标题】:Ionic Back Button Doesn't Hide after exhausting $window.history.back()用尽 $window.history.back() 后,离子后退按钮不会隐藏
【发布时间】:2015-12-24 16:41:55
【问题描述】:

我有一个 ionic 应用程序,它有一个搜索模板,该模板有一个表单,您可以在其中按关键字查询帖子。我还有一项服务,可以将帖子作为列表返回到另一个视图中。一切运行良好。

我的搜索控制器在提交搜索表单时使用:

$state.go('app.search.results', {'searchId': hash});

这样我就可以为该搜索提供一个唯一的 url。我需要这个独特的 url 来实现“返回”功能,这样如果用户点击列表中的一个帖子,在查看帖子后如果他们决定点击返回,他们仍然可以看到搜索结果(通过默认情况下,它们将返回到搜索表单,不再有任何结果)。

为了允许返回搜索结果,我实现了一个自定义后退按钮功能并将其放在离子后退按钮元素上,如下所示:

<ion-nav-back-button ng-click="goBack()">

然后设置一个自定义函数:

$scope.goBack = function() {

    $window.history.back();

}

所有这些都运行良好,我可以返回搜索结果并查看它们,本质上非常类似于普通的浏览器返回功能。

对我来说的问题是,当我通过后退按钮一直“返回”时,我的初始状态包含“后退”按钮并且单击它不会去任何地方并且“后退”按钮仍然显示。 Ionic 在隐藏不应该存在的后退按钮方面做得很好,但在这种情况下并非如此。任何关于如何检查历史记录何时用尽和有条件地隐藏后退按钮的想法将不胜感激。

编辑:

这是一个jsFiddle;注意:在新的单独选项卡中打开小提琴以查看后退按钮问题。仅供参考 搜索在菜单中。

【问题讨论】:

  • 我最终没有使用嵌套状态 app.search.results 并将结果视图更改为单独的状态 app.results,非常类似于播放器和播放器单视图的侧菜单示例离子应用程序。唯一的缺点是我喜欢在具有搜索表单的同一视图上显示结果,以避免再次返回搜索。这是让搜索结果在从帖子返回时保持不变的折衷方案,但我可以只使用内置的后退按钮功能(它有效!)。

标签: angularjs browser-history ionic


【解决方案1】:

我对 Ionic 的几个疑虑之一是它们的“智能”导航。我自己也遇到了很多问题。我的解决方案是创建我自己的后退按钮,此后退按钮存储以前的状态及其参数,因此您可以返回而不会丢失搜索结果,例如您的场景。

此组件为您提供后退按钮和面包屑导航(或者您可以只使用后退按钮)

它是开源的,请随意使用!

jscBreadcrumbs

Strange Milk - Breadcrumbs Post

这是您的 jsFiddle,其中 jscBreadcrumbs 已实现并正常工作:

jsFiddle

jscbreadcrumbs

【讨论】:

  • 有趣的想法,感谢分享。我会记住这一点的。
【解决方案2】:

你使用$window.history.back(),我认为你应该使用$ionicHistory.goBack();。它可以以离子的方式控制历史和视图和状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    相关资源
    最近更新 更多