gpt4 book ai didi

javascript - AngularJs 中 $interval 和 setInterval 的区别

转载 作者:数据小太阳 更新时间:2023-10-29 05:03:50 24 4
gpt4 key购买 nike

我想了解 $interval 和 setInterval 之间的区别。我有这个测试:

Dashboard.prototype.updateTotalAppointments = function(){
//console.log();
this.appointmentsCount = this.appointmentsCount +1;
console.log(this.appointmentsCount);
};

Dashboard.prototype.start = function(){
setInterval(function(){
this.updateTotalAppointments();
}.bind(this), 3000);
}

>

div class="hb-info-card-data-count"><h1>{{dashCtrl.appointmentsCount}}</h1></div>

使用 setInterval 不会更新 HTML 页面上的值,但该值实际上会在浏览器控制台上发生变化,只是不会在 Html 页面上更新。

但如果我这样做:

Dashboard.prototype.start = function(){
$interval(function(){//using $interval seems to work fine
this.updateTotalAppointments();
}.bind(this), 3000);

这看起来很完美,所以我真的不知道为什么后者不起作用,但我真的很想知道。

还有什么是不断从后台请求数据的最佳方式,比如每隔 n 分钟并通过其 Controller 更新页面。

最佳答案

$interval是 Angular 对原生 Javascript setInterval 的包装器。

当使用 $interval 时,Angular 会知道 interval 函数所做的任何范围更改,并且双向绑定(bind)会反射(reflect)这些更改。

当使用 setInterval 时,Angular 不会知道 setInterval 函数所做的任何范围更改。

简单地说,$interval 函数会触发 Angular 的摘要循环,而 setInterval 不会。

This plunkr展示差异。

代码:

angular.module('DemoApp', [])
.controller('IntervalCtrl', function($scope, $interval) {


var updateExampleText = function() {
console.log('Changing exampleText');
$scope.exampleText = 'Time: ' + new Date().getSeconds();
};

$scope.useInterval = function() {
//Show current seconds value 5 times after every 1000 ms
$interval(updateExampleText, 1000, 5);

};

$scope.useSetInterval = function() {
//$scope.exampleText changes are not reflected in the page
//because Angular is not aware of the changes.
setInterval(updateExampleText, 1000);
};
});

关于javascript - AngularJs 中 $interval 和 setInterval 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31889450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com