加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:43:47 所属栏目:安全 来源:网络整理
导读:我使用 ionic v1.0.0,不明白由$ ionicHistory管理的并行历史的方式工作。 特别是在Android设备上,当使用(以前的硬件)后退按钮时,我的Angular应用程序有时表现得很奇怪,我想了解为什么。 (例如:导航返回打开由$ ionicGoBack()关闭的视图很久以前) 对我来
我使用 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中的后退按钮工作…意味着它遵循相同的模式。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读