工厂不能正常工作

时间:2015-10-21 08:55:29

标签: angularjs factory

我有一个工厂的问题,它被称为" 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());        
}]);

2 个答案:

答案 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());        
    }
}]);

现在创建一个在调用实例时返回的对象,每次都是相同的实例。但现在您可以在functionobject上调用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"; } ,所以现在你正在调用从服务返回的对象上的函数。