如何在 ng-repeat 中轮询服务器并根据条件停止轮询
How to poll server in ng-repeat and stop polling on condition
我必须开始轮询服务器以获取多个 table 行的数据,我在 ng-repeat 中有这些。
<table class="table table-bordered" >
<tr>
<th>Id</th>
<th>Title</th>
<th>Amount</th>
<th>...
</tr>
<tr ng-repeat="data in dataList">
<td>
<div>{{ data.id }}</div>
</td>
<td>
<div>{{ data.title }}</div>
</td>
<td>
<div>{{ data.amount }}</div>
</td>
</tr>
</table>
这里我要分别轮询每一行,这样可以看到增加或减少的数量。当我的数量达到 100 时,我必须停止对该行的轮询。
$scope.pollServer = function(id) {
$scope.pollTimeout = $interval(function() {
$scope.getAmount(id);
}, 1000);
};
任何人都可以建议在 angular 中轮询多个线程的最佳方法。以及如何停止单个线程。
TL;DR 只更新模型,ngRepeat 很神奇。
在服务中进行轮询,将其绑定到控制器中的 $scope。
app.factory('dataService', ['$http', '$q', function($http, $q){
return {
pollServer: function() {
return $http.get('url'); // do some call to API
}
}
}]);
在控制器中:
$scope.dataListPromise = dataService.pollServer();
$q.all([dataListPromise]).then(function(results){
$scope.dataList = results[0];
});
记得也将 $q 注入控制器。您可以保持 ngRepeat 与现在相同,但使用数据库中的 id 跟踪数据库结果可能是个好主意。因为你现在正在处理一个延迟,你可以使用 ngCloak 和 ngRepeat 来避免向用户显示预渲染的 $scope 变量。
我必须开始轮询服务器以获取多个 table 行的数据,我在 ng-repeat 中有这些。
<table class="table table-bordered" >
<tr>
<th>Id</th>
<th>Title</th>
<th>Amount</th>
<th>...
</tr>
<tr ng-repeat="data in dataList">
<td>
<div>{{ data.id }}</div>
</td>
<td>
<div>{{ data.title }}</div>
</td>
<td>
<div>{{ data.amount }}</div>
</td>
</tr>
</table>
这里我要分别轮询每一行,这样可以看到增加或减少的数量。当我的数量达到 100 时,我必须停止对该行的轮询。
$scope.pollServer = function(id) {
$scope.pollTimeout = $interval(function() {
$scope.getAmount(id);
}, 1000);
};
任何人都可以建议在 angular 中轮询多个线程的最佳方法。以及如何停止单个线程。
TL;DR 只更新模型,ngRepeat 很神奇。
在服务中进行轮询,将其绑定到控制器中的 $scope。
app.factory('dataService', ['$http', '$q', function($http, $q){
return {
pollServer: function() {
return $http.get('url'); // do some call to API
}
}
}]);
在控制器中:
$scope.dataListPromise = dataService.pollServer();
$q.all([dataListPromise]).then(function(results){
$scope.dataList = results[0];
});
记得也将 $q 注入控制器。您可以保持 ngRepeat 与现在相同,但使用数据库中的 id 跟踪数据库结果可能是个好主意。因为你现在正在处理一个延迟,你可以使用 ngCloak 和 ngRepeat 来避免向用户显示预渲染的 $scope 变量。