每次加载模板时都要阻止调用角度工厂

时间:2014-12-19 13:11:57

标签: angularjs

我正在使用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调用。我只想在第一次加载页面时第一次调用它。怎么做?

1 个答案:

答案 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 }来显式禁用某些调用的缓存。我建议明确启用缓存。缓存是一种优化,如果您忘记在某些时候禁用它,默认情况下启用它可能会破坏应用程序。