Angular Timer指令不起作用

时间:2015-12-12 17:00:22

标签: angularjs timer angular-timer

我想要1分钟的计时器,一旦达到1分钟就应该停止,然后应该调用一个功能。我正在使用angular-timer指令。

我在html中使用的代码是

<timer end-time="60000">
    {{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.
</timer>

我在属性'end-time'中提供60000毫秒(1分钟)的结束时间。但它没有用。当结束时间值为'1451628000000'时,它可以工作。我哪里错了?还帮助我了解如何在计时器结束时调用函数。

提前致谢。

5 个答案:

答案 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请求发生的确切时间,你可以更好地添加一个手表