我刚接触Angular,如果问题太新手了,请提前谅解。我正在尝试创建一个自定义指令,并且由于我已经在使用angular-youtube-embed指令,所以在我的新指令中,我需要将youtube-video
指令中的player
对象传递给我的新指令,以便于我的scope中的playVideo
函数能够使用它。请问我该如何实现?以下是我的指令的代码:
angular.module('coop.directives')
.directive('youtubePlayer', function () {
return {
restrict: 'E',
scope: {
videoPlaying: '=videoPlaying',
playVideo: '&playVideo',
playerVars: '=playerVars',
article: '=article'
},
templateUrl : 'templates/youtube-player.html'
};
});
这是我的youtube-player.html:
<img ng-hide='videoPlaying' ng-src='http://i1.ytimg.com/vi/{{ article.external_media[0].video_id }}/maxresdefault.jpg' class='cover'>
<youtube-video ng-if='videoPlaying' video-url='article.external_media[0].original_url' player='player' player-vars='playerVars' class='video'></youtube-video>
<div ng-hide='videoPlaying' class='iframe-overlay' ng-click='playVideo({player: player})'>
<img ng-hide='videoPlaying' class='play' src='icons/play.svg'/>
<img ng-hide='videoPlaying' class='playButton' src='icons/playRectangle.svg'/>
</div>
这是我想在指令中使用的来自控制器的函数:
$scope.playVideo = function(player) {
$scope.videoPlaying = true;
player.playVideo();
};
在使用angular-youtube-embed包中的youtube-video
指令对象中,player
是一个对象。因此,每当用户点击下面的元素时,$scope.videoPlaying
应该变为true
,并且一个playVideo()
函数应该启动视频:
<div ng-hide='videoPlaying' class='iframe-overlay' ng-click='playVideo(player)'>
这是我在视图中调用指令的方式:
<youtube-player video-playing="videoPlaying" play-video="playVideo()" player-vars="playerVars" article="article"></youtube-player>
我需要以某种方式将Youtube视频中的播放器对象传递到我的自定义指令中,因为现在我遇到了如下错误:
ionic.bundle.js:26794 TypeError: 无法读取未定义的 'playVideo' 属性: