角度应用程序如何处理刷新页面,我们可以在加载指令时使用$ history

use*_*582 19 history scope refresh preserve angularjs

所以有两个问题.

  1. 角度应用程序如何处理刷新页面,b/c从我所听到的,$ rootScope destroy()刷新和应用程序重新运行并重新配置,我想知道是否有一种优雅的方式来保存$ rootScope无需将$ rootScope变量作为字符串存储到存储中.

  2. 如果我在一个在页面上加载模态的指令上加载模板,是否可以将历史记录配置为不导航而是还原打开模式.并且由于验证等原因,我认为不可能使用href实现相同的功能.

pas*_*ine 21

如果您的URL与映射$routeProvider,您可以重新加载控制器调用$route.reload().这样刷新页面时不会破坏$ rootScope.
我已经创建了一个plunker来展示这个.控制器计算页面重新加载的次数.


小智 11

可能无法通过页面重新加载来保留任何javascript变量,而$ rootScope只是一个javascript变量.

看起来你正在寻找的是一种让你的应用程序"从同一点开始"的方式,它是在重新加载页面时留下的.我建议你熟悉国家的概念.每个应用程序都可以被视为一组状态和它们之间的转换.应用程序中发生的每个用户交互或任何其他操作都会更改应用程序的状态或将其保持在相同的状态.例如:单击用户列表中的用户链接会将状态从"查看用户列表"更改为"查看id = 213的用户的用户详细信息",单击"查看用户详细信息为用户ID ="的"编辑"按钮213"将状态更改为"编辑id = 213的用户".当这些转换发生时,变量被赋值,

"从同一点开始"问题所需的两件事是状态管理器以及序列化和存储状态的方法.

作为核心$ router指令之外的状态管理器,您可以使用ui-router.至于使用ui-router序列化和存储状态的方法是通过URL来实现的.ui-router相对于核心$ router的好处是它允许嵌套状态并且通常更灵活.

ui-router还在其github wiki中为你的第二个问题提供了解决方案https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at -a-某些状态