正如標題所示,我希望能夠每隔30秒左右從服務器刷新一個ng-repeat列表。更多的數據可以添加到後端,所以我希望我的列表能夠反映這一點。現在,我有正規$http.get()
工作正常,這是在這裏:每x秒從服務器刷新一個ng-repeat列表
$scope.select = function() {
$scope.searchText = '';
$scope.selectedItem = null;
var url = 'http:xxxxxxxxxxxx.com';
url += $scope.selectModel.name;
console.debug("GOING TO: " + url);
$http.get(url).success(function(data2) {
$scope.records = [];
data2.forEach(function(r) {
$scope.records.push(r);
});
});
};
和網頁它提供的部分:
<div style="margin: 1em">
<h4>Search</h4>
<div role="form">
<!-- start dropdown -->
<div class="form-group">
<select class="form-control" ng-options="model as model.name for model in allModels" ng-model="selectModel" ng-change="select()">
<option value="">Choose Model</option>
</select>
</div>
<!-- /end dropdown-->
<div class="form-group">
<input id="start_date" type="text" class="form-control" placeholder="Threat Date">
</div>
</div>
<div>
<table class="table table-hover table-striped" ng-show="records">
<thead>
<th>#</th>
<th>Name</th>
<th>Score</th>
</thead>
<tr data-ng-repeat=" item in records | orderBy : '-score' | limitTo : 10 " ng-click="moreInfo(item)">
<td>{{$index+1}}</td>
<td>{{item.name.slice(5)}}</td>
<td>{{item.score.toFixed(3)}}</td>
</tr>
</table>
</div>
</div>
有沒有辦法選擇時間@該列表會刷新?它必須沒有刷新按鈕或類似的東西。提前致謝。
編輯這是我的錯誤,當我嘗試使用$interval
的建議:
ReferenceError: $interval is not defined
at Scope.$scope.select (http:xxxxxxxxxx.com/UserQuery/js/script.js:24:7)
at fn (eval at <anonymous> (https://code.angularjs.org/1.4.0-rc.0/angular.js:12822:15), <anonymous>:2:209)
at Scope.$get.Scope.$eval (https://code.angularjs.org/1.4.0-rc.0/angular.js:15465:28)
at https://code.angularjs.org/1.4.0-rc.0/angular.js:21825:13
at https://code.angularjs.org/1.4.0-rc.0/angular.js:24485:9
at forEach (https://code.angularjs.org/1.4.0-rc.0/angular.js:332:20)
at NgModelController.$$writeModelToScope (https://code.angularjs.org/1.4.0-rc.0/angular.js:24483:5)
at writeToModelIfNeeded (https://code.angularjs.org/1.4.0-rc.0/angular.js:24476:14)
at https://code.angularjs.org/1.4.0-rc.0/angular.js:24470:9
at validationDone (https://code.angularjs.org/1.4.0-rc.0/angular.js:24398:9)
解決方案從這個和其他問題相結合的努力,我來到了一個解決方案。首先,就像許多人提到的這個問題一樣,這裏的關鍵是使用$interval
。有幾件重要的事情不需要使用它。
- 它必須包含在控制器的依賴項中,如提到的 @mcpDESIGNS。
在我的情況下,如果有一個下拉列表,我想要 到
$interval
以上的多個東西,當您打開一個新的 時,關閉一個是非常重要的。$scope.select = function() { $scope.searchText = ''; $scope.selectedItem = null; $interval.cancel(mainInterval); $scope.url = ''; url = 'http:xxxxxxxxxxxxxx.com'; url += $scope.selectModel.name; console.debug("GOING TO: " + url); $http.get(url).success(function(data2) { $scope.records = []; data2.forEach(function(r) { $scope.records.push(r); }); }); mainInterval = $interval(function() { console.debug("UPDATING...."); console.debug("GETTING NEW FROM " + url); $http.get(url).success(function(data2) { $scope.records = []; data2.forEach(function(r) { $scope.records.push(r); }); }); }, 5000); };
嘿,因爲上面的那個人不會回答,我用'$ http.get()'調用的js方法是基於某些事件調用的。在那裏有'$ interval'會對初始調用產生影響。爲了在第一次用戶必須調用'select'方法時填充列表。之後是我希望刷新列表的位置。我不想每次刷新時都要調用'select'方法。 – erp
我在想這個,如果你把$ interval放在最初的$ http調用中,你應該沒問題。 –
嗨,感謝您的耐心,但即使您編碼,我仍然遇到麻煩。我更新了有關'$ interval'的錯誤信息。我把控制檯輸出在那裏,它甚至沒有進入'$ interval'裏面 – erp