我有一个计时器,它是从某个用户设置的值中计算出来的。他们输入一些被视为分钟的数字。数字* 1000 * 60,以将其转换为毫秒-从那里计数器正在计数和减少这个数字。
我要做的是把这个数字格式化为分钟和秒,所以如果输入的数字是3.5,它应该显示为03:30。
我试过使用日期过滤器,它是由角提供的,但它与定时器的值不同步。它会减少一次,然后停止。
代码:
<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);
}发布于 2016-06-15 20:46:42
好吧那么..。我在计算时间时犯了一个严重的错误.
我设置了$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';
}
});发布于 2016-06-15 13:39:20
我认为这是因为你把“这个”隐藏在你的内在功能中。尝试将其重写为(未经测试的!):
start(duration) {
var ticks = duration;
this.timer = this.$interval(() => {
if (ticks === 0) return this.stop();
ticks--;
}, 1000);
}https://stackoverflow.com/questions/37836738
复制相似问题