首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用AngularJS过滤器格式化时间?

如何用AngularJS过滤器格式化时间?
EN

Stack Overflow用户
提问于 2016-06-15 13:22:10
回答 2查看 102关注 0票数 1

我有一个计时器,它是从某个用户设置的值中计算出来的。他们输入一些被视为分钟的数字。数字* 1000 * 60,以将其转换为毫秒-从那里计数器正在计数和减少这个数字。

我要做的是把这个数字格式化为分钟和秒,所以如果输入的数字是3.5,它应该显示为03:30。

我试过使用日期过滤器,它是由角提供的,但它与定时器的值不同步。它会减少一次,然后停止。

代码:

代码语言:javascript
复制
<h4 class="timer">{{ vm.timer.ticks | date: "mm:ss"}}</h4>

定时器的背景在服务中。

代码语言:javascript
复制
start(duration) {
  this.ticks = duration;
  this.timer = this.$interval(() => {
    if (this.ticks === 0) return this.stop();
    this.ticks--;
  }, 1000);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-15 20:46:42

好吧那么..。我在计算时间时犯了一个严重的错误.

我设置了$scope.$watch来监视服务中的变量,并据此改变了其他两个变量。

代码语言:javascript
复制
$scope.$watch('vm.timer.ticks', value => {
  if (value <= 0) {
    vm.timer.count = 0;
    vm.timer.latest = '';
  }
  if(vm.timer.ticks > 0)  {
    seconds = vm.timer.ticks % 60;
    minutes = Math.floor(vm.timer.ticks / 60);
    filledMinutes = minutes < 10 ? "0" + minutes : minutes;
    filledSeconds = seconds < 10 ? "0" + seconds : seconds;
    vm.displayTime = filledMinutes + ':' + filledSeconds;
  } else {
    vm.displayTime = '00:00';
  }
});
票数 0
EN

Stack Overflow用户

发布于 2016-06-15 13:39:20

我认为这是因为你把“这个”隐藏在你的内在功能中。尝试将其重写为(未经测试的!):

代码语言:javascript
复制
start(duration) {
  var ticks = duration;
  this.timer = this.$interval(() => {
    if (ticks === 0) return this.stop();
    ticks--;
  }, 1000);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37836738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档