使用 angular 和超时进行计数器
Making a counter with angular and timout
嘿,我正在尝试构建一个显示在 html 中的简单计数器。它有点工作,但它不听超时并给出一堆错误。
这是我遇到的错误
TypeError: fn is not a function
这是 javascript 函数和对象:
$scope.funFacts = {
'1': {
'text': 'Projecten',
'amount': 3,
'counter' : 0
},
'2': {
'text': 'Blije klanten',
'amount': 3,
'counter' : 0
},
'3': {
'text': 'Koffies per week',
'amount': 15,
'counter' : 0
},
'4': {
'text': 'Pizza\'s gegeten',
'amount': 45,
'counter' : 0
},
};
$scope.startAnimation = function(funFact) {
var i = 1;
$scope.ticker = function(funFact) {
funFact.counter = i;
i++;
if (i <= funFact.amount) {
$timeout($scope.ticker(funFact), 1000);
}
}
$timeout($scope.ticker(funFact), 1000);
}
这是我用来显示和启动计数器的 html:
<section class="m-30">
<div class="container">
<div class="facts">
<div class="col-md-3 col-sm-6 fact text-center p-20" ng-repeat="funFact in funFacts" ng-init="startAnimation(funFact)">
<h1>{{funFact.counter}}</h1>
<hr>
<h5>{{funFact.text}}</h5>
</div>
</div>
</div>
</section>
您需要将函数而不是函数调用传递给$timeout
。第一个参数应该是 function
,你传递的是 function call
。你可以做的是:
$timeout(function(){$scope.ticker(funFact)}, 1000);
嘿,我正在尝试构建一个显示在 html 中的简单计数器。它有点工作,但它不听超时并给出一堆错误。
这是我遇到的错误
TypeError: fn is not a function
这是 javascript 函数和对象:
$scope.funFacts = {
'1': {
'text': 'Projecten',
'amount': 3,
'counter' : 0
},
'2': {
'text': 'Blije klanten',
'amount': 3,
'counter' : 0
},
'3': {
'text': 'Koffies per week',
'amount': 15,
'counter' : 0
},
'4': {
'text': 'Pizza\'s gegeten',
'amount': 45,
'counter' : 0
},
};
$scope.startAnimation = function(funFact) {
var i = 1;
$scope.ticker = function(funFact) {
funFact.counter = i;
i++;
if (i <= funFact.amount) {
$timeout($scope.ticker(funFact), 1000);
}
}
$timeout($scope.ticker(funFact), 1000);
}
这是我用来显示和启动计数器的 html:
<section class="m-30">
<div class="container">
<div class="facts">
<div class="col-md-3 col-sm-6 fact text-center p-20" ng-repeat="funFact in funFacts" ng-init="startAnimation(funFact)">
<h1>{{funFact.counter}}</h1>
<hr>
<h5>{{funFact.text}}</h5>
</div>
</div>
</div>
</section>
您需要将函数而不是函数调用传递给$timeout
。第一个参数应该是 function
,你传递的是 function call
。你可以做的是:
$timeout(function(){$scope.ticker(funFact)}, 1000);