我有一个带有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");
,但动作方法只会在第一次被击中。我不明白为什么会这样。