我使用工厂在用户登录后获取JSON数据。如果用户名和密码正确,它应该从api链接中提取JSON数据。我的应用程序中有几个控制器需要使用这些数据。我想避免与我的所有控制器共享这个工厂,因为我不想保留“获取”数据。我只希望这个工厂和登录控制器一起使用。保存其他控制器使用的'GET'请求的数据?
如何从'dummyData'保存数据,然后所有其他控制器都可以使用该数据,而不必每次都发出'GET'请求?
angular.module('ciscoImaDashboardApp').factory('dummyData', ['$q', '$http', function($q, $http) {
var apiServices = {};
apiServices.saveData = function(user,password) {
var deferred = $q.defer();
var req = $http({
method: 'GET',
url: 'http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/login/login/?username='+user+'&password='+password
});
req.success(function(response) {
deferred.resolve(response);
});
req.error(function(err) {
console.log("there was an error: "+err);
deferred.reject(err);
});
return deferred.promise;
}
return apiServices;
}]);
您可以使用[$ cacheFactory](https://docs.angularjs.org/api/ng/service/$cacheFactory)并在第一次调用后保存结果 –
看看我在这篇文章中的回答: http://stackoverflow.com/questions/33968655/how-can-i-use-my-json-without-triggering-a-new-api-request-everytime-i-want-to-u/33969521#33969521 – sjokkogutten
你可以使用['$ rootScope'](http://astutejs.blogspot.in/2015/07/angularjs-what-is-rootscope.html)吗?一个例子[SO帖子](http://stackoverflow.com/questions/21444100/angularjs-how-to-http-get-data-and-store-it-in-service) –