我正在尝试在音频播放器应用中实现Videogular。下面给出了this page上的示例代码中的设置:

      <vg-time-display>{{ currentTime | date:'mm:ss' }}</vg-time-display>
      <vg-scrub-bar>
        <vg-scrub-bar-current-time></vg-scrub-bar-current-time>
      </vg-scrub-bar>
      <vg-time-display>{{ timeLeft | date:'mm:ss' }}</vg-time-display>


但是,我尝试加载的音频超过一个小时,因此我需要实现“ hh:mm:ss”。当我将格式更改为hh:mm:ss时,会增加持续时间约5:00小时,而00:01:30则显示为05:01:30

通过一些专门实验,“ videogular.js”中的以下更改解决了该问题:

this.onUpdateTime = function (event) {
  $scope.API.currentTime = 1000 * event.target.currentTime - (1000 * 60 * 300 * 5 * 5);

  if (event.target.duration != Infinity) {
    $scope.API.totalTime = 1000 * event.target.duration - (1000 * 60 * 300 * 5 * 5);
    $scope.API.timeLeft = 1000 * (event.target.duration - event.target.currentTime) - (1000 * 60 * 300 * 5 * 5);
    $scope.API.isLive = false;
  }
}


但这也会影响以下无法修复的代码:

  percentTime = 100 * (newCurrentTime / API.totalTime);
  elem.css("width", percentTime + "%");

最佳答案

是的,这看起来更多是因为AngularJS过滤器中缺少功能,而不是Videogular中的问题。我们正在使用AngularJS日期过滤器,就像您在AngularJS文档中看到的那样,它仅支持浏览器时区或UTC。

https://docs.angularjs.org/api/ng/filter/date

如果要显示小时数,建议您创建自己的过滤器以显示小时数,并使用其代替日期:'mm:ss'。

因为它看起来像Videogular的一个不错的功能,所以我将尝试看一下AngularJS代码并添加完整的时区支持。

关于javascript - Videogular-hh:mm:ss格式的日期过滤器不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28501672/

10-12 12:56