2016-08-18 19 views
8

Próbuję utworzyć komponent opakowania dla ngAudio sam opakowanie będzie odtwarzaczem z elementami sterującymi - i będzie współdziałać z funkcjami ngAudio. Mam pewne problemy z zasięgiem, mogę go wprowadzić do kontrolera komponentu i uzyskać tam dostęp do ngAudio, ale nie mogę uzyskać do niego dostępu z zakresu szablonu. Próbowałem ustawić zasięg w zakresie ngAudio przy użyciu rzeczy takich jak $scope.ngAudio = ngAudio; bez rezultatu - jeśli ktokolwiek ma jakieś pomysły, byłoby super. Uważam, że będzie to wymagało jakiegoś dwukierunkowego wiązania? Lub w inny sposób, aby uzyskać ogólny dostęp do modułu ngAudio z poziomu dyrektywy.Nie można uzyskać dostępu do modułu z szablonu dyrektywy, Angular

Kod:

komponent:

.component('player', { 
    // isolated scope binding 
 bindings: { 
   genre: '=', 
   track: '=', 
   ngAudio: '<' 
 }, 

 templateUrl : '/templates/player-directive-template.html', 

 // The controller that handles our component logic 
 controller : function($scope, ngAudio) { 

   //tried: 
   //$scope.ngAudio = ngAudio; 
   ngAudio.play("https://api.soundcloud.com/tracks/167999916/stream?client_id=123456576789"); 

 } 
}); 

szablon

<div class="container" id="player"> 

 <button class='btn btn-primary' ng-click='ngAudio.paused ? ngAudio.play() : ngAudio.pause()'>{{ngAudio.paused ? "Play" : "Pause" }}</button> 
</div> 

Odpowiedz

5

Ponieważ jest to komponent, czy próbowałeś tylko ...

this.ngAudio = ngAudio; 

?

No, rzeczywiście, zgodnie z docs, chcesz ustawić go do wyniku load lub play, jak:

this.audio = ngAudio.play("https://api.soundcloud.com/tracks/167999916/stream?client_id=123456576789"); 

Patrz "kątowy audio przykład" kawałek w docs w http://danielstern.github.io/ngAudio/#/docs (w sam dół strony)

+0

Dzięki! Po prostu wstaw to i nadal nie wyglądaj z powiązaniami w szablonie. Jest wyświetlane jako niezdefiniowane w kodzie HTML szablonu. –

+1

NgAudio tutaj jest usługą, a nie dyrektywą, a to, do czego próbujesz uzyskać dostęp, jest w rzeczywistości wynikiem wywołania 'play', więc myślę, że powinieneś to przypisać. Zaktualizowałem odpowiedź, przyjrzyj się również dodanemu linkowi. – Meligy

+1

Dziękujemy! Miałeś rację, miałem na myśli usługę, a nie jej przykład. Miłego dnia :) –

Powiązane problemy