我正在使用AngularJS和Angular Routing。我有模板' home.html'和该模板的控制器' homeController'。另外,我有这个工厂:
app.factory('therapyService', function ($http) {
return {
getTherapies: function () {
//return the promise directly.
return $http.get('http://localhost:8080/application/api/rest/therapy').then(function (result) {
//resolve the promise as the data
return result.data;
});
}
}
});
In controller:
therapyService.getTherapies().then(function (results) {
$scope.therapies = results;
...
}
问题是每当我点击该页面时,都会再次调用该http调用。我只想在第一次加载页面时第一次调用它。怎么做?
答案 0 :(得分:1)
您可以通过将配置参数传递给$http
调用来启用单个调用的缓存:
return $http.get('url', { cache: true }).then(...)
如果您发现大多数呼叫都需要缓存且很少有未缓存的呼叫,那么您可以在应用程序的配置阶段默认为呼叫启用缓存:
var myApp = angular.module('myApp',[])
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.cache = true;
}])
然后,您可以通过传递{ cache: false }
来显式禁用某些调用的缓存。我建议明确启用缓存。缓存是一种优化,如果您忘记在某些时候禁用它,默认情况下启用它可能会破坏应用程序。