清除AngularJs中的服务数据

时间:2014-05-05 13:31:30

标签: angularjs logout clear angular-seed

我试图将数据存储在我的服务中,类似于以下答案:

Processing $http response in service

app.factory('myService', function($http) {
  var promise;
  var myService = {
    async: function() {
      if ( !promise ) {
        // $http returns a promise, which has a then function, which also returns a promise
        promise = $http.get('test.json').then(function (response) {
          // The then function here is an opportunity to modify the response
          console.log(response);
          // The return value gets picked up by the then in the controller.
          return response.data;
        });
      }
      // Return the promise to the controller
      return promise;
    }
  };
  return myService;
});

app.controller('MainCtrl', function( myService,$scope) {
  $scope.clearData = function() {
    $scope.data = {};
  };
  $scope.getData = function() {
    // Call the async method and then do stuff with what is returned inside our own then function
    myService.async().then(function(d) {
      $scope.data = d;
    });
  };
});

但是,我注意到即使在注销后我的服务中的数据仍然存在。因此,我可以以完全不同的用户身份登录,并查看我不应该看到的数据。

退出后如何清除数据?当然,我可以手动清除所有服务中的所有内容,但我正在寻找更通用的方法,例如"清除所有用户数据"。我试图强制页面刷新,但它有效,但我不喜欢它产生的闪光灯。

编辑:示例中的代码

1 个答案:

答案 0 :(得分:0)

要清除myService中的数据,您可能有一个在$ scope.clearData上调用的destroy()函数。 例如:

app.factory('myService',function('$http'){
   /// do you stuff
   return{
     myServices : //...,
     destroy : function(){
       promise = null;//destroy promise
     }
   }
});

另外,您可能不希望在$ scope中存储数据。您可能想要分离控制和数据。