所以两个问题。
角度应用程序如何处理刷新页面,我听到的 b/c,刷新时 $rootScope destroy() 和应用程序重新运行和重新配置,我想知道是否有一种优雅的方式来保存 $rootScope无需将 $rootScope 变量作为字符串存储到存储中。
如果我在页面上加载模式的指令上加载模板,是否可以将历史配置为不导航但恢复打开的模式。由于验证等原因,我认为不可能使用 href 实现相同的功能。
如果您的 url 与 . 映射$routeProvider
,您可以重新加载调用$route.reload()
. 这会在不破坏 $rootScope 的情况下刷新页面。
我已经创建了一个 plunker 来展示这一点。控制器计算页面被重新加载的次数。
可能无法通过页面重新加载来保留任何 javascript 变量,而 $rootScope 只是一个 javascript 变量。
似乎您正在寻找的是一种使您的应用程序“从重新加载页面时离开的同一点开始”的方法。我建议您熟悉state的概念。每个应用程序都可以被视为一组状态和它们之间的转换。应用程序中发生的每个用户交互或任何其他操作要么改变应用程序的状态,要么使其保持在相同的状态。例如:单击用户列表中的用户链接将状态从“查看用户列表”更改为“查看 id=213 的用户的用户详细信息”,单击“查看 id=213 的用户的用户详细信息”上的“编辑”按钮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-确定状态
你不能使用 window.localstorage 来保存你的 js 变量吗?这样,如果用户在应用程序之外刷新页面,您可以重新加载您的值