我有一个工厂的问题,它被称为" HomeController"被调用,问题是这也是对api的xhr请求,但结果似乎是缓存或某种东西,当我第二次去家庭控制器时,它没有提出另一个请求它应该。 事实上,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());
}]);
答案 0 :(得分:1)
工厂返回单身人士。所以这实际上是预期的行为。
您应该返回一个对象,公开执行ajax调用的方法,而不是在工厂执行期间执行它。
答案 1 :(得分:0)
因此,工厂的行为就像单身人士。所以每次都要访问同一个实例。要更改此行为:
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());
}
}]);
现在创建一个在调用实例时返回的对象,每次都是相同的实例。但现在您可以在function
,object
上调用getHome
,每次调用XHR
时都会执行home_page.getHome().success(function(data, status){
$scope.home_json = data;
console.log(data);
});
次请求。
然后稍微改变了调用函数:
home_page.getHome()
注意public class Customer
{
public string First { get; set; } = "Jane";
public string Last { get; set; } = "Doe";
}
,所以现在你正在调用从服务返回的对象上的函数。