我想要1分钟的计时器,一旦达到1分钟就应该停止,然后应该调用一个功能。我正在使用angular-timer指令。
我在html中使用的代码是
<timer end-time="60000">
{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.
</timer>
我在属性'end-time'中提供60000毫秒(1分钟)的结束时间。但它没有用。当结束时间值为'1451628000000'时,它可以工作。我哪里错了?还帮助我了解如何在计时器结束时调用函数。
提前致谢。
答案 0 :(得分:1)
end-time
参数采用时间戳(以毫秒为单位)。您的60000被视为时间戳。所以它已经停止了。
您可以做的是计算现在的时间戳,并为调整添加60000个。
在您的控制器中:
$scope.endTime = (new Date()).getTime()+60*1000;
在视图中:
<timer end-time="{{endTime}}">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer>
我不确定您需要以哪种格式显示该计时器,但是根据您的要求,我们会这样做。
要在特定时间段后运行功能,只需在控制器内使用$timeout
服务即可。注入$timeout
并像JS中的setTimeout
函数一样使用它。
$timeout(function () {
console.log('this will run after 1 minutes');
}, 60*1000);
有关详细信息,请查看$ timeouts documentation。
答案 1 :(得分:1)
您还可以按如下方式使用倒数时间。
倒数计时器
<timer interval="1000" countdown="100">{{countdown}}</timer>
将从100开始倒计时直到达到0,每秒滴答一次
此标记仅显示分钟和秒的倒计时时间。该属性也可以应用于常规时钟计时器。
<timer countdown="10041" max-time-unit="'minute'" interval="1000">
{{mminutes}} minute{{minutesS}}, {{sseconds}} second{{secondsS}}
</timer>
倒数计时器,一旦达到回调就更新一个值
<timer countdown="3" interval="1000" finish-callback="callbackTimer.finished()">
{{seconds}} second{{secondsS}}
</timer>
答案 2 :(得分:0)
你的错误很简单,很容易解决。 JavaScript总是以毫秒为单位使用时间,因此6000 eqauls到6秒。如果您尝试这个应该可以工作:
<timer end-time="60000">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer>
答案 3 :(得分:0)
遵循Angular-Timer文档here,您应该使用interval,countdown和finish-callback的组合来实现您的用例。
countdown
- 从此号码开始,倒计时为0
interval
- 屏幕更新的时间间隔。因此,如果您将间隔设置为1000,它将每秒刷新(大致)
finish-callback
- 在倒计时结束后调用一个函数。
<timer countdown="60" interval="1000"
finish-callback="myFinishCallback()">
{{seconds}} second{{secondsS}}
</timer>
答案 4 :(得分:0)
而不是在html标签中使用定时器,这是一个属性,它更好地用在像$timeout(callAtTimeout, 60000);
这样的angularjs中,那么当你可以调用方法callAtTimeOut()时,它可以让你的工作变得简单。如果你不知道ajax请求发生的确切时间,你可以更好地添加一个手表