我有一个离子应用,它有一个搜索模板,其中有一个表单,您可以按关键字查询帖子。我还有一个服务,将帖子作为另一个视图的列表返回。一切运作良好。
提交搜索表单后,我的搜索控制器使用:
$state.go('app.search.results', {'searchId': hash});
这样我就可以为该搜索创建一个唯一的网址。我需要这个独特的URL来实现“后退”功能,这样如果用户点击列表中的一个帖子,在查看帖子后如果他们决定点击回来,他们就会看到搜索的结果(通过默认情况下,它们将返回搜索表单而不再有任何结果。)
为了允许返回搜索结果,我实现了一个自定义后退按钮功能,并将它放在离子后退按钮元素上,如下所示:
<ion-nav-back-button ng-click="goBack()">
然后设置自定义函数:
$scope.goBack = function() {
$window.history.back();
}
所有这些都运行良好,我可以回到搜索结果并查看它们,基本上非常像普通的浏览器后退功能。
问题在于,当我通过后退按钮“退回”时,我的初始状态包含“后退”按钮,点击它不会去任何地方,“后退”按钮仍会显示。当它不应该存在时,Ionic在隐藏后退按钮方面做得相当不错,但在这种情况下并非如此。任何关于如何检查历史记录是否耗尽以及有条件地隐藏后退按钮的想法都将不胜感激。
编辑:
这是jsFiddle;注意:在新的单独选项卡中打开小提琴以查看后退按钮问题。 FYI搜索在菜单中。
答案 0 :(得分:1)
我对Ionic的一些疑虑是他们的“智能”导航。我自己遇到了很多问题。我的解决方案是创建一个我自己的后退按钮,这个后退按钮存储以前的状态和它们的参数,这样你就可以返回而不会丢失搜索结果,例如你的场景。
此组件为您提供了后退按钮和面包屑(或者您只需使用后退按钮)
它是开源的,随意使用它!
Strange Milk - Breadcrumbs Post
这是你的jsFiddle实现和工作的jscBreadcrumbs:
jscbreadcrumbs
答案 1 :(得分:0)
您使用$window.history.back()
,我认为您应该使用$ionicHistory.goBack();
。它可以以离子方式控制历史,观察和状态。