AngularJs中$interval和setInterval的区别
Difference between $interval and setInterval in AngularJs
我试图了解$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分钟通过它的控制器更新页面
$interval是Angular对原生Javascript setInterval的包装。
当使用$interval
时,Angular会意识到interval函数所做的任何作用域变化,并且双向绑定会反映这些变化。
当使用setInterval
时,Angular将不会意识到setInterval函数所做的任何作用域更改。
简单地说,$interval
函数会触发Angular的消化循环,而setInterval
不会。
这个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);
};
});
$interval是setInterval和$apply的换行符。当$interval发生时,它使作用域变量的更新可见。同样适用于$timeout
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- node.js:setInterval()正在跳过调用
- 在ember/handlers中使用value和valueBinding有什么区别
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 什么's本地node.js服务器和python简单http服务器之间的区别
- setInterval和clearInterval javascript无法按需工作
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Don'我不明白为什么我的setInterval+jQuery;不起作用
- setInterval游戏循环的范围问题
- JavaScript setInterval problems
- Math.min()和Math.max()之间有什么区别?在Javascript中
- 如何在Javascript中延迟setInterval
- jQuery递归函数调用和Javascript之间有区别吗;s setInterval
- AngularJs中$interval和setInterval的区别
- setInterval(func)和setInterval(function(){func()})有什么区别?
- setTimeout() 和 setInterval() 之间的区别