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

Angular:从sessionStorage恢复范围

冷英光
2023-03-14
问题内容

页面刷新时,我试图从sessionStorage检索搜索和过滤数据。

sessionStorage.restorestate返回未定义,有人知道为什么吗?

app.run(function($rootScope) {
    $rootScope.$on("$routeChangeStart", function(event, next, current) {
      if (sessionStorage.restorestate == "true") {
        $rootScope.$broadcast('restorestate'); //let everything know we need to restore state
        sessionStorage.restorestate = false;
      }
    });

    //let everthing know that we need to save state now.
    window.onbeforeunload = function(event) {
      $rootScope.$broadcast('savestate');
    };
  });

Plunkr:http://plnkr.co/edit/oX4zygwB0bDpIcmGFgYr?p
= preview


问题答案:

当您在Angular应用程序中刷新页面时,就像完全重新启动应用程序一样。因此,要从会话存储中还原,只需在服务工厂执行时执行即可。

app.factory('CustomerSearchService', ['$rootScope',
    function($rootScope) {
        ...
        function restoreState() {
            service.state = angular.fromJson(sessionStorage.CustomerSearchService);
        }
        if (sessionStorage.CustomerSearchService) restoreState();
        ...
    }
]);

保存部分已经正确。

app.factory('CustomerSearchService', ['$rootScope',
    function($rootScope) {
        ...
        function saveState() {
            sessionStorage.CustomerSearchService = angular.toJson(service.state);
        }
        $rootScope.$on("savestate", saveState);
        ...
    }
]);

app.run(function($rootScope) {
    window.onbeforeunload = function(event) {
      $rootScope.$broadcast('savestate');
    };
});

演示



 类似资料:
  • 问题内容: 我阅读了有关sessionStorage和localStorage的一些文档,但是我不明白范围是什么:域,特定页面? 并且如果在上述每个页面上运行(idvalue是查询字符串中的值): 我最终会存储3个不同的值,还是两个值会互相覆盖? 问题答案: 这些值将互相覆盖。每个密钥名称对对于协议和域而言都是唯一的,而与路径无关。 可以通过属性更改受影响的域。 -> 可以(子域) -> 不可能

  • sessionStorage 是一个实现了 HTML5 规范中的数据存储的实现,支持主流浏览器。 示例代码: sessionStorage.getItem("test"); // null sessionStorage.setItem("test", "yo"); sessionStorage.getItem("test"); // yo

  • 我想在系统中使用增量备份作为主要的cassandra备份类型,但我有一些误解: 从增量备份进行还原的一种方法对我有用 - 只需从备份文件夹复制到表文件夹,这是正确的方法吗? 我可以以某种方式备份表\键空间参数,如索引/replica_factor等吗? 谢谢。

  • 所以我有一个我似乎无法解决的问题。我有一个ViewPager在我的一个活动中,比如MainActivity。我正在实现所有必要的方法,以保存和检索实例状态时,活动被取消在后台。但是当活动试图恢复它的状态时,片断会被恢复,但它们并没有附加到viewpager,所以我得到的只是一个白色屏幕。 下面是相关代码: mainactivity.java ViewPagerAdapter.java 因此,如果我

  • 正如名字一样,这个(recover)内建函数被用于从 panic 或 错误场景中恢复:让程序可以从 panicking 重新获得控制权,停止终止过程进而恢复正常执行。 recover 只能在 defer 修饰的函数(参见 6.4 节)中使用:用于取得 panic 调用中传递过来的错误值,如果是正常执行,调用 recover 会返回 nil,且没有其它效果。 总结:panic 会导致栈被展开直到 d

  • MySQL的恢复 常用命令 利用source命令恢复数据库 利用mysql命令恢复(标准) gzip备份文件包的解压方式 常用命令 去除多余注释查看备份数据 egrep -v "#|\*|--|^$" ~/test.sql 利用source命令恢复数据库 进入到mysql数据库客户端,mysql -uroot -p登录后,使用source命令,后面跟脚本文件 source all.sql # 默认