2015-11-05 29 views
-2

我在我的控制器中有一個數據數組,包括一個聲音文件源的字符串。我需要做的是讀取數組並以ng-repeat顯示。我有一個按鈕,必須播放陣列中每個元素的聲音。無法將音頻源傳遞到ngAudio內ng-repeat

源是一個字符串,但是當我把它傳遞給ngAudio,它將搜索像>http://localhost:8100/%7B%7Banimal.audio%7D%7D源,所以它永遠不會找到該文件,以發揮它

我想有另一個控制器,將在收到來源的價值,一旦它被ng-repeat調用,但這對我來說並不合適。有沒有辦法實現這一點?

這是我的代碼:

//controller 

.controller('GranjaController', function($scope) { 
    $scope.animals = [ 
    { name: 'Vaca', id: 1, img: "img/granja/vaca.png", kname: "Wakax", audio: "sounds/vaca.mp3" }, 
    { name: 'Caballo', id: 2, img: "img/granja/caballo.png", kname: "Kej" , audio: "sounds/caballo.mp3" } 
    ]; 
}) 



//index.html 

<ion-item ng-repeat="animal in animals" href="#/app/playlists/{{playlist.id}}"> 
    <img ng-src="{{animal.img}}" /> 
    {{animal.name}} 
    <button ng-audio= "{{animal.audio}}" volume="0.5" start="0.2">Click me</button> 
    <button ng-audio= "sounds/granja/vaca.mp3" volume="0.5" start="0.2">Click me</button> 
</ion-item> 

第一個按鈕永遠達不到一個文件,因爲ngAudio收到一個奇怪的字符串,第二個按鈕完美的作品,雖然是相同的字符串我有在數組中。 正如ngAudio的文檔所說:「ngAudio:接受一個字符串並用ngAudio.load()創建一個新對象」 然後爲什麼它不起作用?


UPDATE

我使它通過使用控制器內的負載()方法工作,因爲@jami0821我指出。這是我的最終代碼:

//controller 

.controller('GranjaController', function($scope, ngAudio) { 
    $scope.animals = [ 
    { name: 'Vaca', id: 1, img: "img/granja/vaca.png", kname: "Wakax", audio: ngAudio.load("sounds/granja/vaca.mp3") }, 
    { name: 'Caballo', id: 2, img: "img/granja/caballo.png", kname: "Kej" , audio: ngAudio.load("sounds/granja/caballo.mp3") } 
    ]; 
}) 


//index.html 
<ion-item ng-repeat="animal in animals" href="#/app/playlists/{{playlist.id}}"> 
    <img ng-src="{{animal.img}}" /> 
    {{animal.name}} 
    <button ng-click="animal.audio.play()">Click me</button> 
</ion-item> 
+0

可以嘗試'NG-ATTRS-NG-音頻= 「{{animal.audio}}」' –

+0

不起作用。它甚至沒有在控制檯 – montjoile

+1

中顯示任何控制檯錯誤的文件請求? –

回答

-1

音頻通過ngAudio服務load方法加載:

angular.module('yourModule',['ngAudio']) 
.controller("yourController",function($scope,ngAudio){ 
    $scope.sound = ngAudio.load("sounds/mySound.mp3"); // returns NgAudioObject 
}) 

所以可能想嘗試修改您的控制器包括ngAudio依賴還有load方法。

來源:https://danielstern.github.io/ngAudio/#/docs

+0

我正在通過連接到控制器的路由訪問視圖,但仍然不工作 – montjoile

+0

而且您已將間距更正爲:'ng-audio =「{{animal.audio}}」' – jami0821

+0

是的,但沒有任何更改。似乎ngAudio正在以純文本的形式閱讀直接文字 – montjoile