Videogular-hh:mm:ss格式的日期筛选器不起作用



我正在尝试在我的音频播放器应用程序中实现Videogular。本页示例代码中的设置如下:

      <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

如果你想显示小时,我建议你创建自己的过滤器来显示小时,并使用它来代替日期:"m:ss"。

由于它看起来是Videogular的一个很好的功能,我将尝试查看AngularJS代码,并添加完整的时区支持。

如果将时区"+0000"指定为日期过滤器的第二个参数,则似乎可以正常工作:

<vg-time-display>{{ currentTime | date:'HH:mm:ss':'+0000' }}</vg-time-display>

最新更新