当前位置: 首页 > 面试题库 >

离子历史记录如何工作以及何时创建非根堆栈?

傅博容
2023-03-14
问题内容

我使用的离子 V1.0.0和不理解所管理的并行方式的历史$ionicHistory著作。

特别是在Android设备上,当使用(以前为硬件)后退按钮时,我的Angular应用有时会表现得很奇怪,我想了解原因。(示例:向后导航可打开$ionicGoBack()很久以前关闭的视图)

对我来说,似乎某些ui路由器导航会创建新的历史记录堆栈,而其他一些则将历史记录项放在根历史记录中,即使从状态到子状态的访问都应附加到记录了IMO的历史记录中。

问题

  • 任何人都可以解释在哪种情况下ui-sref$state.go(...)将历史记录项添加到新创建的堆栈中吗?
  • 什么时候附加到root
  • 是否以特殊方式对待情态?

抱歉,没有具体说明,但是该应用程序相当复杂,我不知道如何在单个插件中隔离问题。也许我错过了一些很好的文档…


问题答案:

即使您可能找不到要查询的所有信息,我也会尝试回答这个问题。

很多人-包括我自己-似乎很难理解导航系统和历史的工作方式。

前面我已经回答了一个问题,试图解释为什么事情没有按预期进行。导航似乎可以跟踪用户使用集合访问过的每个视图。实际上,$ionicHistory对象中有2个集合。第一个$ionicHistory.viewHistory().views似乎跟踪当前堆栈中每个已访问的视图,而另一个$ionicHistory.viewHistory().histories跟踪整个应用程序的所有历史记录。

选项卡,菜单或常规视图的历史记录类型可能不同。

您可以在此Codepen中看到并行的独立历史记录如何工作。
那里有2种不同的历史。一个用于主页选项卡,第二个用于关于选项卡。

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

我在这里准备了另一个插件,您可以在其中查看导航的工作方式以及页面中显示的一些详细信息。

$ionicHistory.viewHistory().views每次用户访问新页面时,视图的集合都会更新(集合中的当前视图用方括号括起来)。

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

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

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

在我的小矮人的“发票”页面上,有一个绿色按钮(“其他”根视图)。当按下时,我设置新的历史记录根并更改状态:

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

事情按预期工作,实际上我现在没有后视图,并且堆栈仅包含当前视图。

当您尝试序列时,事情变得混乱了:

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

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

按下主页按钮应清除后退按钮,因为我们位于当前历史记录的根目录下,但不会发生。

一遍又一遍地使用相同的模式会无限期地增加集合的大小。

我猜这不是正确的行为,需要修复。

回到您的问题。

Android中的“后退”按钮可以正常工作…表示它遵循相同的模式。

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



 类似资料:
  • 历史回放如何在抑扬顿挫中发挥作用? 我有一个按顺序调用两个活动的工作流。 比方说,第一个活动完成了,第二个活动有100行代码。如果应用服务器在执行activity2中的第50行代码时重新启动,它会从第50行开始执行吗?如果是,cadence内部正在发生什么神奇的事情? 我的hello活动中有上面的代码。此代码将运行4分钟,当条件满足时,它将在文件中写入数据 我启动了一个工作流,并在打印后退出了节奏

  • 读取播放历史信息 调用地址 http://api.bilibili.cn/history 返回 返回值字段 字段类型 字段说明 results int 返回的记录总数目 list object 返回数据 返回字段 “list” 子项 返回值字段 字段类型 字段说明 aid int 视频编号 typeid int 视频分类ID typename string 视频分类名称 title string

  • 历史记录 控制台维护 Elasticsearch 成功执行的最后500个请求列表。点击窗口右上角的时钟图标即可查看历史记录。这个图标会打开历史记录面板,您可以在其中查看历史请求。您也可以在这里选择一个请求,它将被添加到编辑器中当前光标所在的位置。 图 9. 历史记录面板

  • 3.3.1.1. 同步的文件历史记录 微力同步记录对文件的添加,修改、删除的操作记录,通过历史记录列表可查看时间时间及发生设备,如下: 事件时间,显示添加、修改、删除等操作发生的时间; 文件时间,显示该文件的最后修改时间; 操作类型,显示此次针对该文件所进行的操作的类型; 发生设备,显示进行此操作的设备名称; 目录,显示该文件所属同步目录; 清空历史记录,点击后可清除所有记录,此操作仅清除记录而已

  • 我的案例是批准、拒绝或返回我的请求,并基于该工作流更改其状态。candence如何帮助保存/检索每个工作流的所有操作历史。

  • 问题内容: 我的数据仓库中有一些实体: 人员 -具有personId,dateFrom,dateTo等属性,可以更改的其他属性(例如,姓氏,生日)等-尺寸变化缓慢 文档 -documentId,编号,类型 地址 -addressId,城市,街道,房屋,公寓 (人和文档)之间的关系是一对多,(人和地址)之间的关系是多对多。 我的目标是创建历史事实表,以回答以下问题: 哪些人在规定的日期住在规定的地址