【问题标题】:Save element state in angularjs在angularjs中保存元素状态
【发布时间】:2013-08-30 18:20:36
【问题描述】:

假设我有一些由ng-repeat 设置的动态 div 元素。当我单击此元素时,它会切换 div 上的一个类,就像单选按钮一样,让您一次只能选择一个 div。

是否有可能通过 local storage 之类的方式使用 AngularJS 保留所选状态,以便稍后访问该页面时它知道要选择哪个元素?

【问题讨论】:

  • 不是保存元素本身,而是保存你的 JS 对象作为数据层(在很多情况下是控制器的 $scope)(可能在本地存储中),然后从那里恢复它并数据绑定应该为您处理剩下的事情。
  • @BenjaminGruenbaum 这就是计划。当我向后导航(实际上还没有更改页面)时,我现在引用元素的方式实际上是在我的对象中保存对元素的引用。我只是不确定当我重新加载页面并返回该参考是否真的准确

标签: javascript angularjs local-storage


【解决方案1】:

视情况而定。即使用户离开站点或重新加载页面,或者只是在 Angular 中四处点击时,您是否希望保存状态?

如果您只想要第二个,老实说,如果您只是想加快网站速度,这已经足够了,您可以将状态保存在服务中。服务只有一个实例,因此如果您将某些内容保存在服务中并稍后访问它,它将包含相同的数据。但是,这仍然只是保存在 javascript 中,因此实际页面刷新或离开站点时会将其删除。更多信息请参见答案here

如果您想保留更长的时间,则需要使用 cookie 或本地存储。 Angular 有一个额外的插件,你可以下载它,叫做 angular-cookies,它为你提供了 $cookies 服务来处理 cookie。但是,$cookies 有一些问题,它不允许您设置 cookie 的路径,这使得它在某些情况下不可行,并且它不处理本地存储。所以它可能对你有用,但你可能需要为它创建自己的系统或找到其他人。

【讨论】:

  • 我绝对需要用户离开网站或重新加载页面时保存的状态。我会调查这个饼干的事情。我的总体目标是用户经过 5 个步骤,保存他们的状态。稍后回来,可以加载他们之前的步骤
  • 是的,$cookieStore 真的很容易使用。
  • 那么 cookie(或较新浏览器的本地存储)适合您。
猜你喜欢
  • 2014-05-08
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 2021-05-28
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多