1

我想要一个 1 分钟的计时器,它应该在达到 1 分钟后立即停止,然后调用一个函数。我为此使用了角度计时器指令。

我在 html 中使用的代码是

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

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

提前致谢。

4

5 回答 5

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>
于 2015-12-12T17:19:07.793 回答
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在控制器中使用 service 即可。像JS 中的函数一样注入$timeout和使用它。setTimeout

$timeout(function () {
    console.log('this will run after 1 minutes');
}, 60*1000);

有关更多信息,请查看 $timeouts文档

于 2015-12-12T17:08:25.313 回答
0

与其在 html 标记中使用计时器(这是一个属性,不如在 angularjs 中使用更好)$timeout(callAtTimeout, 60000);,然后当您可以调用方法 callAtTimeOut() 时,它可以让您的工作变得简单。如果您不知道请求的 ajax 调用发生的确切时间,您可以添加一个手表更好

于 2015-12-12T17:58:36.317 回答
0

你的错误很简单,而且很容易修复。JavaScript 总是以毫秒为单位使用时间,因此 6000 等于 6 秒。如果您尝试以下操作,它应该可以工作:

<timer end-time="60000">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer>
于 2015-12-12T17:08:23.863 回答
0

按照此处的 Angular-Timer 文档,您应该使用间隔、倒计时和完成回调的组合来实现您的用例。

countdown- 从这个数字开始倒计时到 0

interval- 屏幕更新的时间间隔。因此,如果您使用间隔为 1000,它将每秒刷新一次(大致)

finish-callback- 倒计时完成后调用函数。

<timer countdown="60" interval="1000" 
       finish-callback="myFinishCallback()">
   {{seconds}} second{{secondsS}}
</timer>
于 2015-12-12T17:25:11.420 回答