2014-05-05 30 views
5

Tôi đang cố gắng để lưu trữ dữ liệu trong dịch vụ của tôi tương tự như câu trả lời trong:dữ liệu dịch vụ rõ ràng trong AngularJs

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; 
    }); 
    }; 
}); 

Tuy nhiên, tôi nhận thấy rằng các dữ liệu trong dịch vụ của tôi vẫn tồn tại ngay cả sau khi logout . Vì vậy, tôi có thể đăng nhập như một người dùng hoàn toàn khác và xem dữ liệu mà tôi không nên xem.

Làm cách nào để xóa dữ liệu sau khi đăng xuất? Chắc chắn tôi có thể tự xóa tất cả mọi thứ trong tất cả các dịch vụ của mình, nhưng tôi đang tìm cách tiếp cận tổng quát hơn như "xóa tất cả dữ liệu người dùng". Tôi đã cố gắng buộc một trang làm mới, và nó hoạt động, nhưng tôi không thích flash nó tạo ra.

chỉnh sửa: Mã từ ví dụ

+0

_how_ chính xác "tương tự"? (ví dụ: hiển thị mã của bạn) Nếu bạn đang làm đúng, bạn thực sự không nên có bất kỳ dữ liệu liên tục nào trong dịch vụ. – thescientist

+0

Bạn có thể chia sẻ mã dịch vụ của mình không? – Chandermani

+0

Tôi nên thuật lại câu hỏi của mình, với đăng xuất, tôi có nghĩa là chức năng đăng xuất của riêng tôi, chỉ xóa một số dữ liệu người dùng. Dịch vụ vẫn được khởi tạo và chứa các nội dung tương tự như trước khi đăng xuất. – user1354603

Trả lời

0

Để xóa các dữ liệu trong MyService, bạn có thể có một chức năng tiêu diệt() được kêu gọi $ scope.clearData. Ví dụ:

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

Lưu ý phụ, có thể bạn không muốn lưu trữ dữ liệu trong phạm vi $. Bạn có thể muốn tách kiểm soát và dữ liệu.

0

Tôi đang sử dụng góc-devise để quản lý người dùng của mình. Dưới đây là những gì tôi có trong dịch vụ của mình để xóa dữ liệu khi đăng xuất:

app.service("MyService", ["$rootScope", function($rootScope) { 
    // destroy the user data on logout 
    self = this; 
    this.shouldBeDestroyed = "foo"; 

    $rootScope.$on('devise:logout', function(event) { 
    self.shouldBeDestroyed = null; 
    }); 
}); 

Tôi muốn tìm một cách đáng tin cậy hơn để tiêu diệt các đối tượng nhạy cảm trong dịch vụ. Điều này giải quyết vấn đề của tôi mặc dù.

Các vấn đề liên quan