2017-05-05 91 views
3

我無法弄清楚我的音頻標籤正在發生什麼。音頻播放錯誤文件

我有兩個不同的觀點,在離子與2個不同的控制器,每一個都有它自己的音頻標籤。

<audio controls="true"> 
    <source data-ng-src="{{getUrl()}}" type="audio/mpeg"> 
</audio> 

他們perfecly工作,但是當我viewAudio1和viewAudio2之間直接切換音頻標籤不會起到良好的文件,即使這樣在開發工具中的src不要在音頻標籤正在播放的文件相匹配。 我火了此功能更新音頻:

function loadAudio() { 
    var audio = document.getElementsByTagName("audio")[0]; 
    document.getElementById('timeline').style.width = '0%'; 
    audio.setAttribute("src", $scope.getUrl()); 
    audio.pause(); 
    audio.load(); 
} 

我已經嘗試了很多吊環與沒有運氣解決這個問題。

+0

Url已被正確更改,所以'getUrl()'方法在刷新時顯示新值?如果它在函數中具有適當的值,但不能超出該值,則應該使用[NgZone](http://stackoverflow.com/questions/43466666/ionic-2-on-function-does-not-refresh-the -ngmodel-properly) – Hexiler

+0

getUrl給出了很好的值,我可以在音頻標籤的src屬性中看到預期的url。但它不會播放src中的內容。我感覺當前視圖的音頻標籤沒有播放,而是音頻標籤形成最後一個視圖正在播放舊音頻(這是可以理解的嗎?^^我不是一個母語對不起) – Sandroggy

+1

你暫停舊音頻的地方?因爲'load'前面的'audio.pause()'想要暫停實際的音頻,這是一個局部變量。因此,首先爲'audio'創建一個全局變量,然後'暫停'(或停止),然後設置新的屬性和加載。 (順便說一句,我明白你了,和這裏一樣:D) – Hexiler

回答

0

audio您的audio變量是本地變量,因此將其作爲全局變量來創建。此外,你現在暫停新的音頻。所以在加載新的之前,請暫停舊的。