我有一个计时器,正在从某个用户设置的值开始倒计时。 他们输入一些被视为分钟的数字。数字* 1000 * 60将其转换为毫秒 - 从那里计数器倒计时并减少此数字。
我想要做的是将此数字格式化为分钟和秒,因此如果输入的数字是3.5,则应显示为03:30。
我尝试过使用Angular提供的日期过滤器,但它与定时器的值不同步。它会减少一次然后停止。
代码:
<h4 class="timer">{{ vm.timer.ticks | date: "mm:ss"}}</h4>
计时器的背景是服务
start(duration) {
this.ticks = duration;
this.timer = this.$interval(() => {
if (this.ticks === 0) return this.stop();
this.ticks--;
}, 1000);
}
答案 0 :(得分:0)
我认为这是因为你正在隐藏&#34;这个&#34;在你的内在功能。尝试将其重写为(未经测试!):
start(duration) {
var ticks = duration;
this.timer = this.$interval(() => {
if (ticks === 0) return this.stop();
ticks--;
}, 1000);
}
答案 1 :(得分:0)
好的,所以...当我计算时间时,我犯了一个可怕的错误......
我设置$ scope。$ watch从服务中查看我的变量,并根据我正在改变其他变量。
$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';
}
});