如何定期自动调用Angular $ http请求

时间:2018-05-05 22:06:10

标签: angularjs

我有一个带有Angular前端的MVC Web应用程序。我希望View通过触发在设定的时间间隔内生成Angular $ http请求的函数来自动更新它的内容。

我很确定我拥有完成这项工作所需的所有部分,但我似乎无法将它们组合在一起。

这就是我目前正在尝试的,

角:

app.controller("processModel", function ($scope, $http, $interval) {

    $scope.GetData = function () {
        $interval($scope.LoadData, 3000);
    }

    $scope.LoadData = function() {
        $http({
            method: "GET",
            url: 'Home/DataRefresh'
        }).then(function success(response) {
            $scope.data = response.data;
        }, function error(errResponse) {
            alert("ERROR!");
        });
    };  
});

HTML:

<div class="jumbotron" style="margin-bottom:0; padding-top:10px;" ng-init="GetData()">

    <tr ng-repeat="item in data">

        <td>{{item.info}}</td>

    </tr>

<div>

此代码在等待3秒后在页面加载时触发一次然后停止(Home / DataRefresh再也不会被命中)或者它每3秒命中一次并且每次都抛出一般的ERROR。

它表达的这两种行为中的哪一种是不一致的,我无法弄清楚它为什么会这样做。

编辑:所以我已将角度更改为此并添加了警报调试语句。

app.controller("processModel", function ($scope, $http, $interval) {
    $scope.LoadData = function() {
        $http({
            method: "GET",
            url: 'Home/REIDataRefresh'
        }).then(function success(response) {
            $scope.data = response.data;
            alert("Got into the success response");
        }, function error(errResponse) {
            alert("data " + errResponse.data + " status " + errResponse.status + " headers " + errResponse.headers + "config " + errResponse.config + " statusText " + errResponse + " xhrStat " + errResponse.xhrStatus);
        });
    };  

    $interval($scope.LoadData, 3000);
});

非常奇怪的是,它 每隔3秒就会到达alert("Got into the success response");,但动作方法只会在第一次被击中。我不明白为什么会这样。

0 个答案:

没有答案