gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:51:21 25 4
gpt4 key购买 nike

我有几个使用网络服务并缓存大量结果的服务。缓存是指存储在服务的变量中。当用户注销时,数据应该被清除。服务如下所示(简化版):

class DataService   {

private data;

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

这是 typescript ,但解析为这样的东西:

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

我可以使用 This Question 中的答案清除数据这是在做这样的事情:

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

但是,当我们有多个服务和 Controller 时,这会是很多代码。我们都知道这个新人会向服务添加一些新数据,但他忘记将其添加到注销序列中。这只是一种不好的做法。

同样,数据存储在应用程序各个部分的 $scope 中,这也必须清除。范围相当简单,因为 Controller 的构造函数在每次页面访问时加载,然后将覆盖数据。

一个建议的解决方案是进行刷新,但这会带来糟糕的用户体验。

一个解决方案可能是让 Angular 相信服务从未被创建或完全重新加载 Angular。

最好的方法是什么?将数据存储在服务变量中不好吗?

最佳答案

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

这还为您提供了一个优势,即您可以随时了解哪些服务数据需要清除,因为您将来可能会遇到异常。

另请参阅此答案以供引用:Injecting a service into another service in angularJS

关于javascript - 在 AngularJs 中注销时清除服务中数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26522875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com