Javascript angular不会从json更改音频源

Javascript angular不会从json更改音频源,javascript,angularjs,json,audio,Javascript,Angularjs,Json,Audio,我试图嵌入音频文件到HTML与音频标签。播放音频的src是从API获得的,我有5-6个不同的音频文件 当我单击playStart()时,播放的音频文件是相同的,即使src显示不同的链接 <tbody> <tr ng-repeat="val in values track by $index"> <td ng-bind="$index +1">1</td> <td ng-bind="val._id">

我试图嵌入音频文件到HTML与音频标签。播放音频的src是从API获得的,我有5-6个不同的音频文件

当我单击playStart()时,播放的音频文件是相同的,即使src显示不同的链接

<tbody>
    <tr ng-repeat="val in values track by $index">
        <td ng-bind="$index +1">1</td>
        <td ng-bind="val._id">ED1500322</td>
        <td>
            <audio id="audioTag">
                <source controls ng-src="{{val.file}}"></source>
            </audio>

            <button class="play-btn" ng-click="playStart()"><img src="app_static/images/play.png"></button>
            <button class="play-btn" ng-click="playStop()">stop</button>
        </td>
        <td ng-bind="val.result"></td>

    </tr>
</tbody>
我只听到相同的音频剪辑,即使DOM显示链接不同

对于从api获得的播放音乐的任何帮助,我们将不胜感激。您的问题是

 document.getElementById("audioTag")
始终返回页面中的第一个元素

您可以做的是更改id,以便每个音频元素都有不同的id

改变

<audio id="audioTag">
因此,您将获得id作为参数

你的职能是:

$scope.playStart = function(id) {
    var audio = document.getElementById(id);
    audio.load();
    audio.play();  
};
就这些。

你的问题是

 document.getElementById("audioTag")
始终返回页面中的第一个元素

您可以做的是更改id,以便每个音频元素都有不同的id

改变

<audio id="audioTag">
因此,您将获得id作为参数

你的职能是:

$scope.playStart = function(id) {
    var audio = document.getElementById(id);
    audio.load();
    audio.play();  
};
仅此而已。

使用如下类:

HTML

<tbody>
<tr ng-repeat="val in values track by $index">
    <td ng-bind="$index +1">1</td>
    <td ng-bind="val._id">ED1500322</td>
    <td>
        <audio class="audioTag">
            <source controls ng-src="{{val.file}}"></source>
        </audio>

        <button class="play-btn" ng-click="playStart($index)"><img src="app_static/images/play.png"></button>
        <button class="play-btn" ng-click="playStop($index)">stop</button>
    </td>
    <td ng-bind="val.result"></td>

</tr>
使用类,例如:

HTML

<tbody>
<tr ng-repeat="val in values track by $index">
    <td ng-bind="$index +1">1</td>
    <td ng-bind="val._id">ED1500322</td>
    <td>
        <audio class="audioTag">
            <source controls ng-src="{{val.file}}"></source>
        </audio>

        <button class="play-btn" ng-click="playStart($index)"><img src="app_static/images/play.png"></button>
        <button class="play-btn" ng-click="playStop($index)">stop</button>
    </td>
    <td ng-bind="val.result"></td>

</tr>

使用类,因为getElementById始终返回元素的第一个id使用类,因为getElementById始终返回元素的第一个id