Javascript 只发射一次?
看,我的密码 我想每滴答增加100次延迟时间,但似乎只触发一次。我不太明白这一点。它发射一次,但不会重复Javascript 只发射一次?,javascript,angularjs,Javascript,Angularjs,看,我的密码 我想每滴答增加100次延迟时间,但似乎只触发一次。我不太明白这一点。它发射一次,但不会重复 var gravity = angular.module('gravity', []); function GravCtrl($interval) { this.acceleration = 9.8; this.elapsedTime = 0; this.speed = 0; this.$interval = $interval;
var gravity = angular.module('gravity', []);
function GravCtrl($interval) {
this.acceleration = 9.8;
this.elapsedTime = 0;
this.speed = 0;
this.$interval = $interval;
}
GravCtrl.prototype.start = function() {
this.counter = this.$interval(function(that) {
that.elapsedTime += 100;
that.speed = ( that.elapsedTime / 1000.0 ) * that.acceleration;
console.log('thing firing');
}(this), 100)
};
gravity.controller('GravCtrl', GravCtrl);
调用函数并将
undefined
传递给$interval
。从那里删除(this)
,并在interval调用的正上方添加var=this
。您正在立即调用它,而不是提供对间隔的函数引用。快速查看控制台应该会发现一些信息。我需要能够从间隔内访问GravCtrl对象中的变量。如果不以某种方式将它们传递到函数中,它们将不可用。如何访问间隔内的变量?@opticon请参阅我上面的评论,var that=this
并从函数(that)
中删除that
。如果要使用this
,请执行。绑定(this)
,而不是(this)
。您应该阅读。您调用函数并将undefined
传递给$interval
。从那里删除(this)
,并在interval调用的正上方删除var=this
。您正在立即调用它,而不是提供对间隔的函数引用。快速查看控制台应该会发现一些信息。我需要能够从间隔内访问GravCtrl对象中的变量。如果不以某种方式将它们传递到函数中,它们将不可用。如何访问间隔内的变量?@opticon请参阅我上面的评论,var that=this
并从函数(that)
中删除that
。如果要使用this
,请执行。绑定(this)
,而不是(this)
。你应该读书。