工厂只在加载app时检索$ http,如何在每次控制器调用它时强制它检索Feed?

时间:2014-05-30 13:19:35

标签: angularjs

我有一个非常简单的工厂:

.factory('NewsHandler', function ($http) {

  return $http.get('http://server.com/feed/news.json');

});

在我的偏见中,我这样称呼这个工厂:

  $scope.news;
  NewsHandler.success(function(data) {
    $scope.news = data;
  });

似乎工厂只在应用加载后才会调用。每次我从一个部分转到另一个部分再回来时,我都试图让它加载。我怎样才能确保发生这种情况?

2 个答案:

答案 0 :(得分:1)

Angular服务是单例,并在首次检索后由注入器缓存。使用您的代码,$http.get('http://server.com/feed/news.json');返回的值将在整个应用程序中缓存并重复使用。

尝试这样的事情:

.factory('NewsHandler', function ($http) {
  return {
      get: function() {
         return $http.get('http://server.com/feed/news.json');
      }
   };
});

  $scope.news;
  NewsHandler.get().success(function(data) {
    $scope.news = data;
  });

答案 1 :(得分:0)

.factory('NewsHandler', function ($http) {

  return function(){return $http.get('http://server.com/feed/news.json')};

});

$scope.news;
NewsHandler.success(function(data) {
   $scope.news = data();

});

asuming data is your service