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

在AngularJs中注销时清除服务中数据的最佳实践

卫飞鹏
2023-03-14
问题内容

我有几个使用Web服务的服务,并且缓存了很多结果。通过缓存,我的意思是存储在服务的变量中。用户注销时,应清除数据。这些服务如下所示(简化版本):

class DataService   {

  private data;

  constructor($http)
  {
     $http.get(url).then((response) => 
       { 
          this.data = response.data;
       });
  }

}

这是打字稿,但可以解决如下问题:

var DataService = (function () {
    function DataService($http) {
        var _this = this;
        $http.get(url).then(function (response) {
            _this.data = response.data;
        });
    }
    return DataService;
})();

我可以使用在回答清除数据这个问题 这是做这样的事情:

$rootScope.on('logout',function(){
  this.data = [];
});

但是,当我们有多个服务和控制器时,这是很多代码。我们都知道,这个新人将向服务中添加一些新数据,而他却忘记了将其添加到注销序列中。这简直是​​一个坏习惯。

类似地,数据存储在$ scope中应用程序的各个部分,也必须清除该数据。范围非常简单,因为控制器的构造函数在每次页面访问时都会加载,然后将覆盖数据。

一种建议的解决方案是进行刷新,但这会给用户带来可怕的体验。

一种解决方案可能是使angular相信从未创建过服务或完全重新加载angular。

做这个的最好方式是什么?将数据存储在服务的变量中是否不好?


问题答案:

您可以创建一个服务,负责从其他服务中清除所有数据。在这种情况下,您只需要调用clear此服务的“
”方法,并在此服务内实现单个清除调用即可(因此仅实现一次)。

这也给您带来的好处是,由于将来可能会有例外,因此您可以始终了解需要始终清除哪些服务数据。



 类似资料:
  • 本文向大家介绍PHP中SESSION的注销与清除,包括了PHP中SESSION的注销与清除的使用技巧和注意事项,需要的朋友参考一下 1、每个页面都必须开启session_start()后才能在每个页面里面使用session。 2、session_start()初始化session,第一次访问会生成一个唯一会话ID保存在客户端(是基于cookie保存的),用户下次访问时,session_start(

  • 问题内容: 我的角度应用程序有2个控制器。我的问题是,当用户离开页面时,控制器不会保留数据。 如何将所选控制器上的选定数据存储到数据存储中,以便可以在其他控制器之间使用? 问题答案: 选项1-自定义 您可以利用专用的角度服务在控制器之间存储和共享数据(服务是单实例对象) 服务定义 在多个控制器中的用法 选项2-HTML5 您可以使用内置的浏览器本地存储并从任何地方存储数据 写作 读 看看这个很棒的

  • 问题内容: 我想知道在更改密码/注销时不击db而使JWT无效的最佳实践。 我下面的想法是通过点击用户数据库来处理上述2种情况。 1.万一密码更改,我检查存储在用户数据库中的密码(散列)。 2.在注销的情况下,我将上次注销时间保存在用户数据库中,因此通过比较令牌创建时间和注销时间,我可以使这种情况无效。 但是这两种情况都是以用户每次点击api时每次点击用户db为代价的。任何最佳做法都值得赞赏。 更新

  • 问题内容: 现在,我正在Ruby on Rails之上构建一个基于AngularJS的应用程序,并使用Devise进行身份验证。当用户成功通过身份验证和身份验证失败时,服务器会正​​确响应。我想我的问题是,使用$ cookieStore,了解用户是否登录的最佳实践是什么?Rails设置了一个名为“ myapp_session”的cookie,但该会话并不一定意味着用户已登录。正在寻找有关如何使用A

  • 我正在做我的第一个react项目,我有一个问题。 使用,在react中处理和存储数据的最佳方法是什么? 我当前的工作流程: 在 将数据存储在(例如在中作为子对象` 使用控件的属性中的数据,如

  • 使用Spring Data nad Querydsl,我们可以只声明存储库接口并跳过实现类。一些具有特定名称或使用@Query注释的方法,仅此而已。 但是有时我想使用JPAQuery并自己定义方法的主体,比方说 null