不能从指令模板访问模块,Angular

Cannot access module from directive template, Angular

本文关键字:模块 Angular 访问 指令 不能      更新时间:2023-09-26

我正在尝试为ngAudio制作包装器组件,包装器本身将是带有控件的播放器-并将与ngAudio的功能进行交互。我有一些作用域问题,我可以将它注入组件的控制器并访问那里的ngAudio,但我不能从模板的作用域访问它。我试过使用$scope.ngAudio = ngAudio;之类的东西将ngAudio设置为范围,但无济于事-如果有人有任何想法,那将是很棒的。我相信它需要某种双向绑定?或者以某种方式从指令级访问ngAudio模块。

代码:

组件:

.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>

既然这是一个组件,您是否尝试过…

this.ngAudio = ngAudio;

?

不,实际上,根据文档,您要将其设置为loadplay的结果,如:

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

参见http://danielstern.github.io/ngAudio/#/docs文档中的"Angular Audio Example"部分