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