2016-06-15 3 views
1

私はいくつかのユーザーによって設定されている値からカウントダウンしているタイマーを持っています。 分として処理されている数字が入力されます。 number * 1000 * 60をmillisecondsに変換します。そこからカウンタはカウントダウンし、この数値をデクリメントします。AngularJSフィルタで時間をフォーマットするにはどうすればよいですか?

私がやりたいことは、この数値を分単位でフォーマットすることです。そのため、入力された数値が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

オクラホマので、私は時間を計算したとき...私は$スコープを設定...

をひどいミスを犯し$に見て:(!未テスト)としてそれを書き換えるようにしてください。サービスから私の変数を監視し、それに応じて私は他の変数を変更していました。私はその変数へのアクセス権を持っているので、問題になることはありません

$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

私はあなたがあなたの内側の関数の中で「この」隠れているので、それだと思うです。

start(duration) { 
    var ticks = duration; 
    this.timer = this.$interval(() => { 
    if (ticks === 0) return this.stop(); 
    ticks--; 
    }, 1000); 
} 
+0

そのここにトリックを行って 'このthat'対、矢印機能とは関係ありません... –

+0

。 const vm = this; vm.timer = TimerService; そして、私はvm.timer.ticks経由で変数にアクセスします。 フォーマットが問題です。データ受信部分は問題ありません。 – Darko

関連する問題