【发布时间】: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