Angularjs 工厂运转不正常

Angularjs 工厂运转不正常,angularjs,factory,Angularjs,Factory,我对一个工厂有一个问题,一旦调用了“HomeController”,它就会被调用,问题是这也会向api发出一个xhr请求,但结果似乎是缓存的或其他什么,在某种程度上,当我第二次访问HomeController时,它不会发出另一个请求,它应该这样做。 事实上,app console.log(“HomeController”)工作得非常好,在我进入主页的任何时候都会调用它,但第二个console.log工厂中的控制台只调用一次 代码如下: app.controller("HomeControlle

我对一个工厂有一个问题,一旦调用了“HomeController”,它就会被调用,问题是这也会向api发出一个xhr请求,但结果似乎是缓存的或其他什么,在某种程度上,当我第二次访问HomeController时,它不会发出另一个请求,它应该这样做。 事实上,app console.log(“HomeController”)工作得非常好,在我进入主页的任何时候都会调用它,但第二个console.log工厂中的控制台只调用一次

代码如下:

app.controller("HomeController",function($scope,home_page,check_login,$rootScope){
    console.log("HomeController");

    $scope.home_json = {};

    home_page.success(function(data, status){
          $scope.home_json = data;
          console.log(data);
    });
});


app.factory('home_page', ['$http', function($http){
    console.log("/libs/home.php?date="+Date.now());
    return $http.get("/libs/home.php?date="+Date.now());        
}]);

工厂返回单身者。因此,这实际上是预期的行为


您应该返回一个对象,该对象公开了一个执行ajax调用的方法,而不是在工厂执行期间执行它。

因此工厂的行为就像是单例。因此,您每次都在访问同一个实例。要更改此行为,请执行以下操作:

app.factory('home_page', ['$http', function($http){
    var service = {
       getHome: getHome
    };

    return service;

    function getHome() {
        console.log("/libs/home.php?date="+Date.now());
        return $http.get("/libs/home.php?date="+Date.now());        
    }
}]);
现在,它正在创建一个在调用实例时返回的对象,每次都是同一个实例。但是现在您可以对
对象
调用
函数
getHome
,它将在每次调用时执行该
XHR
请求

然后调用函数会发生轻微变化:

home_page.getHome().success(function(data, status){
    $scope.home_json = data;
    console.log(data);
});
请注意
主页.getHome()
,现在您正在调用从服务返回的对象上的函数