gpt4 book ai didi

JavaScript 音频播放器插件在 AngularJS 应用程序中加倍标记

转载 作者:行者123 更新时间:2023-12-03 09:10:47 24 4
gpt4 key购买 nike

我有一个 Angular 应用程序,可以从数据库中提取许多音频文件。我使用 Anthony Kolber 的 audio.js 作为 HTML5 播放器,其中关联的包装器和 html 是从 javascript 生成的。问题是标记加倍了,我不明白为什么。无论是否有 ng-repeat 都会这样做,并且在设置加载和进度条宽度时会导致连续的“未定义”错误。

JavaScript 相当长,很难粘贴到这里。我使用代码 here 创建了问题的简化版本以及现场演示 here .

原始 HTML:

<!-- audio links -->
<div ng-repeat="audio in medias | orderBy: 'track'" my-repeat-directive>
<span><em>{{audio.title}}</em></span>
<audio src="" dynamic-url dynamic-url-src="{{audio.url}}" preload="auto" />
</div>

渲染的 HTM:

<div ng-repeat="audio in medias | orderBy: 'track'" my-repeat-directive="" class="ng-scope">
<span><em class="ng-binding">Glass Jungle 1</em></span>

<div class="audiojs loading" classname="audiojs" id="audiojs_wrapper0">

<div class="audiojs " classname="audiojs" id="audiojs_wrapper3">

<audio src="audio_files/Glass_Jungle_sample1.mp3" dynamic-url="" dynamic-url-src="Glass_Jungle_sample1.mp3" preload="auto"></audio>

<div class="play-pause">
<p class="play"></p>
<p class="pause"></p>
<p class="loading"></p>
<p class="error"></p>
</div>
<div class="scrubber">
<div class="progress" style="width: 0%;"></div>
<div class="loaded" style="width: 100%;"></div>
</div>
<div class="time">
<em class="played">00:00</em>/<strong class="duration">01:25</strong>
</div>
<div class="error-message"></div>

</div>

<div class="play-pause">
<p class="play"></p>
<p class="pause"></p>
<p class="loading"></p>
<p class="error"></p>
</div>
<div class="scrubber">
<div class="progress"></div>
<div class="loaded"></div>
</div>
<div class="time">
<em class="played">00:00</em>/<strong class="duration">00:00</strong>
</div>
<div class="error-message"></div>

</div>

最佳答案

我下载了你的代码并对其进行了一些简化,它对我有用:

<!-- audio links -->
<div ng-repeat="audio in medias | orderBy: 'track'">
<span><em>{{audio.title}}</em></span>
<audio src="" dynamic-url dynamic-url-src="{{audio.url}}" preload="auto" />
</div>

<!-- JavaScript -->
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- angularJS -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<!-- AngularJS Scripts -->
<script>
var app = angular.module('myApp', []);
app.controller('mainCtrl', function($scope, $rootScope) {
$scope.medias = [{
"track": 1,
"title": "Glass Jungle 1",
"url": "Glass_Jungle_sample1.mp3"
}, {
"track": 2,
"title": "Glass Jungle 2",
"url": "Glass_Jungle_sample2.mp3"
}, {
"track": 3,
"title": "Glass Jungle 3",
"url": "Glass_Jungle_sample3.mp3"
}];

audiojs.events.ready(function() {
var as = audiojs.createAll();
});

});
app.directive('dynamicUrl', function() {
return {
restrict: 'A',
link: function postLink(scope, element, attr) {
element.attr('src', 'audio_files/' + attr.dynamicUrlSrc);
}
};
});
</script>

其余的都是一样的。我没有深入研究代码出现问题的原因,自从我使用 Angular 以来已经有一段时间了,但我认为这与 myRepeatDirective 有关,它执行 3 次,每个音频文件执行一次。我猜标记只重复了两次,因为第二次遇到了 javascript 错误,以防止它第三次执行。

关于JavaScript 音频播放器插件在 AngularJS 应用程序中加倍标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32077506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com