我正在制作一个演示,其中我将使用固定时间间隔从服务器上获取数据,$interval
现在我需要停止/取消此操作。
我该如何实现?如果需要重新启动该过程,该怎么办?
其次,我还有一个问题:经过规定的时间间隔后,我正在从服务器获取数据。有需要使用$scope.apply
还是$scope.watch
?
这是我的朋克:
app.controller('departureContrl',function($scope,test, $interval){
setData();
$interval(setData, 1000*30);
function setData(){
$scope.loading=true;
test.stationDashBoard(function(data){
console.log(data);
$scope.data=data.data;
$scope.loading=false;
//alert(data);
},function(error){
alert('error')
}) ;
}
});
http://plnkr.co/edit/ly43m5?p=preview
您可以存储间隔返回的承诺并用于$interval.cancel()
该承诺,这将取消该承诺的间隔。要委派间隔的开始和停止,您可以在要停止并从特定事件重新启动它们时创建start()
和stop()
运行它们。我在下面创建了一个片段,通过使用事件(例如ng- click
)和在控制器中实现间隔来开始和停止间隔。
angular.module('app', [])
.controller('ItemController', function($scope, $interval) {
// store the interval promise in this variable
var promise;
// simulated items array
$scope.items = [];
// starts the interval
$scope.start = function() {
// stops any running interval to avoid two intervals running at the same time
$scope.stop();
// store the interval promise
promise = $interval(setRandomizedCollection, 1000);
};
// stops the interval
$scope.stop = function() {
$interval.cancel(promise);
};
// starting the interval by default
$scope.start();
// stops the interval when the scope is destroyed,
// this usually happens when a route is changed and
// the ItemsController $scope gets destroyed. The
// destruction of the ItemsController scope does not
// guarantee the stopping of any intervals, you must
// be responsible for stopping it when the scope is
// is destroyed.
$scope.$on('$destroy', function() {
$scope.stop();
});
function setRandomizedCollection() {
// items to randomize 1 - 11
var randomItems = parseInt(Math.random() * 10 + 1);
// empties the items array
$scope.items.length = 0;
// loop through random N times
while(randomItems--) {
// push random number from 1 - 10000 to $scope.items
$scope.items.push(parseInt(Math.random() * 10000 + 1));
}
}
});
<div ng-app="app" ng-controller="ItemController">
<!-- Event trigger to start the interval -->
<button type="button" ng-click="start()">Start Interval</button>
<!-- Event trigger to stop the interval -->
<button type="button" ng-click="stop()">Stop Interval</button>
<!-- display all the random items -->
<ul>
<li ng-repeat="item in items track by $index" ng-bind="item"></li>
</ul>
<!-- end of display -->
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
问题内容: 我可以在AngularJS范围上设置$ watch,以便在我感兴趣的表达式发生更改时得到通知。但是一旦失去兴趣我该如何停止观看? 问题答案: 当调用一个函数时,该函数将取消注册绑定的表达式。 例如,要观看变量仅更改一次: 希望能有所帮助:-)
问题内容: 是否有一种内置的方法来阻止事件进入作用域链? 由事件传递的事件对象没有方法(如$ rootScope上 的文档所述。)但是,此合并的pull请求表明事件可以对其进行调用。 问题答案: 来自angularJS 1.1.2源代码的片段: 如您所见,$ broadcast中的事件对象没有“ stopPropagation”。 可以使用preventDefault代替stopPropagati
问题内容: 我正在做一个数独求解器,为此,我希望我的JTextFields只接受数字123456789中的一个作为有效输入。因此,我将MaskFormatter与JFormattedTextField一起使用。但是,当我通过执行.setText(“”)清除所有TextField时,MaskFormatter不再起作用。清除文本框后,我可以再次在其中写入任何内容。为什么以及如何解决? 我的代码基本上
问题内容: 我的AngularJS应用程序需要有权访问用户的LinkedIn个人资料。为此,我需要将用户重定向到一个LinkedIn URL,该URL包含一个回调redirect_uri参数,该参数将告诉LinkedIn将用户重定向回我的Web应用程序,并在URL中包含一个“代码”查询参数。这是传统的Oauth 2.0流程。 除了LinkedIn可以将用户重定向回以下URL,其他所有功能都可以正常
问题内容: 我的AngularJS应用程序中具有监视功能。 但是,在某些情况下(在我的示例中,更改了我的单页应用程序的页面),我想停止监视(例如清除超时)。 我怎样才能做到这一点? 问题答案: 返回注销功能。调用它将取消注册。
问题内容: 我有一个应用程序可以从数据库中检索数据,并且可以监视应用程序检索数据所花费的时间。 但是,当我使用相同的数据输入集通过我的应用程序检索数据时,我遇到了一个问题,第二次检索将花费更少的时间。 我认为Java或Hibernate有一些缓存或临时文件来保存数据,因此第二次运行会很快,但是我不希望发生这种情况。我需要监视实际花费的时间,而不是从缓存或临时文件检索的时间。 我试图禁止在Java控