angularjs – 离子历史如何工作,什么时候创建非根堆栈?

前端之家收集整理的这篇文章主要介绍了angularjs – 离子历史如何工作,什么时候创建非根堆栈?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 ionic v1.0.0,不明白由$ ionicHistory管理的并行历史的方式工作。

特别是在Android设备上,当使用(以前的硬件)后退按钮时,我的Angular应用程序有时表现得很奇怪,我想了解为什么。 (例如:导航返回打开由$ ionicGoBack()关闭的视图很久以前)

对我来说,似乎一些ui路由器导航创建新的历史堆栈和其他人将历史项目在根历史记录,即使从状态到子状态应附加到状态记录IMO的历史。

问题

>任何人可以解释在哪些情况下ui-sref或$ state.go(…)追加历史项目到新创建的堆栈?
>什么时候它们附加到根?
>是否以特殊方式处理模态?

对不起,没有更具体,但应用程序是相当复杂,我不知道如何隔离在一个plunkr中的问题。也许我错过了一个很好的文档…

我会尽力回答这个问题,即使你可能找不到所有的信息,你问。

很多人 – 包括我自己 – 似乎很难理解导航系统和历史如何工作。

我早些时候回答question试图解释为什么事情不能按预期工作。
看起来导航跟踪用户使用集合访问过的每个视图。
实际上在$ ionicHistory对象中有2个集合。
第一个$ ionicHistory.viewHistory()。视图似乎跟踪当前堆栈中的每个被访问的视图,而其他$ ionicHistory.viewHistory()。histories记录整个应用程序的所有历史。

对于制表符,侧面或常规视图,您可能有不同类型的历史记录。

你可以看到平行的独立历史如何工作在这个codepen
有2种不同的历史。一个是主选项卡,第二个是关于选项卡。

浏览每个选项卡中的子项,并返回到上一个选项卡,您会注意到导航系统已记住以前的状态。

我准备了另一个plunker在这里,你可以看到导航如何与一些细节显示页面中。

视图的集合$ ionicHistory.viewHistory()。视图在每次用户访问新页面时更新(集合中的当前视图包含在方括号中)。

如果视图已添加到集合中,则不会(不应该)再次添加

您可以更改清除历史记录的行为($ ionicHistory.clearHistory())或设置当前历史记录的根目录:

$ionicHistory.nextViewOptions({
    historyRoot: true
});

在我的plunker的发票页面上有一个绿色按钮(其他根视图)。当按下我设置新的历史根和更改状态:

$ionicHistory.nextViewOptions({
    historyRoot: true
});
$state.go('otherviewroot');

事情工作正如所料,事实上现在我没有后视图,我的堆栈只包含当前视图。

当你尝试序列时,事情变得麻烦:

Home - Contacts - Invoices - Home (button in the header).

现在看起来Ionic已经失去了对序列的控制,并继续向集合添加视图。

按home按钮应该清除后退按钮,因为我们在当前历史的根目录,但不会发生。

使用相同的模式反复增加收集的大小无限期。

我想这不是正确的行为,需要一个修复。

回到你的问题。

Android中的后退按钮工作…意味着它遵循相同的模式。

幸运的是,模态不被视为常规视图,并且不影响集合。

原文链接:https://www.f2er.com/angularjs/145977.html

猜你在找的Angularjs相关文章