Как автоматически вызывать Angular $ http-запрос на регулярной основе - PullRequest
0 голосов
/ 06 мая 2018

У меня есть веб-приложение MVC с угловым интерфейсом. Я хочу, чтобы представление автоматически обновляло свое содержимое, вызывая функцию, выполняющую 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 секунды и каждый раз генерирует общую ОШИБКУ.

Какое из этих двух поведенческих проявлений противоречиво, и я не могу понять, почему оно это делает.

РЕДАКТИРОВАТЬ: Итак, я изменил угол на это и добавил оператор отладки предупреждений.

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);
});

Очень странно, что делает добирается до этого alert("Got into the success response"); каждые 3 секунды, но метод действия срабатывает только в первый раз. Я не понимаю, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...