У меня есть веб-приложение 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 секунды, но метод действия срабатывает только в первый раз. Я не понимаю, почему это так.