如何在AngularJS中保留web api数据

时间:2017-04-21 08:29:26

标签: angularjs asp.net-web-api

我创建了一个工厂作为服务,使用Web API调用从服务器获取一些数据,但是如果我需要再次获取相同的数据,我需要再次访问API,我想在更多地方使用相同的数据并且不要#39;我想再次进行Web API调用。

有没有办法在角度js中保存数据?

3 个答案:

答案 0 :(得分:1)

如果您在服务中进行异步调用并且您正在获取的数据是“静态”,那么缓存它们是有意义的,以避免每次需要时产生新的开销。默认情况下禁用缓存。

$http({
 method: 'GET',
 cache: true
}

答案 1 :(得分:1)

在整个应用程序中共享数据的方法:

1。 使用服务

我们可以创建setget之间controllers之间数据的服务,然后将该服务注入我们想要使用它的控制器函数中。

服务:

app.service('setGetData', function() {
  var data = '';
    getData: function() { return data; },
    setData: function(requestData) { data = requestData; }
});

控制器:

app.controller('myCtrl1', ['setGetData',function(setGetData) {

  // To set the data from the one controller
  var data = 'Hello World !!';  
  setGetData.setData(data);

}]);

app.controller('myCtrl2', ['setGetData',function(setGetData) {

  // To get the data from the another controller  
  var res = setGetData.getData();
  console.log(res); // Hello World !!

}]);

在这里,我们可以看到myCtrl1用于设置数据,myCtrl2用于获取数据。因此,我们可以像这样从一个controlleranother controller共享数据,而无需进行任何进一步的API调用。

2. 使用会话存储

创建工厂服务,该服务将根据密钥保存并返回保存的会话数据。

app.factory('storageService', ['$rootScope', function($rootScope) {

    return {
        get: function(key) {
            return sessionStorage.getItem(key);
        },
        save: function(key, data) {
            sessionStorage.setItem(key, data);
        }
    };
}]);

控制器:

将控制器中的storageService依赖项注入会话存储中的setget数据。

app.controller('myCtrl',['storageService',function(storageService) {

  // Save session data to storageService
  storageService.save('key', 'value');

  // Get saved session data from storageService
  var sessionData = storageService.get('key');

});

答案 2 :(得分:0)

您可以使用HTML5 Web Storage

localStorage.setItem("lastname", "Smith");
console.log(localStorage.getItem("lastname"));