如何在AngularJS中持久化web api数据

如何在AngularJS中持久化web api数据,angularjs,asp.net-web-api,Angularjs,Asp.net Web Api,我已经创建了一个工厂作为服务来使用Web API调用从服务器获取一些数据,但如果我需要再次获取相同的数据,我需要再次点击API,我想在其他地方使用相同的数据,不想再次进行Web API调用 有没有办法在angular js中持久化数据?您可以使用它 localStorage.setItem("lastname", "Smith"); console.log(localStorage.getItem("lastname")); 你可以用它 localStorage.setItem("lastna

我已经创建了一个工厂作为服务来使用Web API调用从服务器获取一些数据,但如果我需要再次获取相同的数据,我需要再次点击API,我想在其他地方使用相同的数据,不想再次进行Web API调用

有没有办法在angular js中持久化数据?

您可以使用它

localStorage.setItem("lastname", "Smith");
console.log(localStorage.getItem("lastname"));
你可以用它

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

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

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

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

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

跨应用程序共享数据的方法:

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 !!

}]);
1.使用服务

我们可以创建一个服务来
设置
获取
控制器之间的数据
,然后将该服务注入我们想要使用它的控制器函数中

服务:

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 !!

}]);
控制器:

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
用于获取数据。因此,我们可以像这样将数据从一个
控制器
共享到另一个
控制器
,而无需进行任何进一步的API调用

2.使用会话存储

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

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

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

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 !!

}]);
将控制器中的
storageService
依赖项注入到
set
get
会话存储中的数据

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

});

跨应用程序共享数据的方法:

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 !!

}]);
1.使用服务

我们可以创建一个服务来
设置
获取
控制器之间的数据
,然后将该服务注入我们想要使用它的控制器函数中

服务:

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 !!

}]);
控制器:

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
用于获取数据。因此,我们可以像这样将数据从一个
控制器
共享到另一个
控制器
,而无需进行任何进一步的API调用

2.使用会话存储

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

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

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

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 !!

}]);
将控制器中的
storageService
依赖项注入到
set
get
会话存储中的数据

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

});

如果我们有数千条记录作为JSON数据,缓存它会好吗?这是$http服务中的一种机制,它存储一个变量和结果,并避免每次再次访问该服务时进行新调用。这是完全合法的。如果我们有数千条记录作为JSON数据,缓存它会好吗?这是$http服务中的一种机制,它存储一个带有结果的变量,并避免每次再次访问该服务时进行新调用。这是完全合法的。您可以使用sessionStorage来存储来自Api的结果,当您再次需要相同的数据时,检查sessionStorage是否有数据,如果没有,则再次调用并将其存储到控制器级别的相同sessionStorage。当您与本地用户共享时,它可能会保存不必要的Api调用。您可以使用sessionStorage来存储Api的结果,当您再次需要相同的数据时,请检查sessionStorage是否有数据,如果没有,请再次调用并将其存储到控制器级别的相同sessionStorage。当您使用本地Api时,它可能会节省不必要的Api调用。