2016-08-18 4 views
8

Я пытаюсь сделать компонент-обертка для ngAudio, сама оболочка будет игроком с элементами управления - и будет взаимодействовать с функциями ngAudio. У меня возникают проблемы с областью, я могу вставить его в контроллер компонента и получить доступ к нему ngAudio, но я не могу получить доступ к нему из области действия шаблона. Я пробовал установить ngAudio в область видимости с помощью таких вещей, как $scope.ngAudio = ngAudio; безрезультатно - если у кого-то есть идеи, это было бы здорово. Я считаю, что для этого потребуется какая-то двухсторонняя привязка? Или каким-то образом получить доступ к модулю ngAudio с уровня директивы.Невозможно получить доступ к модулю из шаблона директивы, Angular

Код:

компонент:

.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"); 

 } 
}); 

шаблон

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

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

ответ

5

Поскольку это компонент, вы пробовали просто ...

this.ngAudio = ngAudio; 

?

Нет, на самом деле, согласно документации, вы хотите, чтобы установить его в результате load или play, как:

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

Смотрите «Угловая Audio Example» кусок в документации на http://danielstern.github.io/ngAudio/#/docs (В в самой нижней части страницы)

+0

Спасибо! Просто поставьте это и не смотрите на привязки в шаблоне. Он отображается как неопределенный в HTML-шаблоне. –

+1

ngAudio вот сервис, а не директива, и то, что вы пытаетесь получить, на самом деле является результатом вызова 'play', поэтому я думаю, что вам следует назначить это. Я обновил ответ, посмотрю на добавленную ссылку. – Meligy

+1

Спасибо! Вы были правы, я имел в виду службу, а не экземпляр этого. Хорошего дня :) –

Смежные вопросы