2016-08-15 3 views
0

で-SRCをngのためにURLを渡すために、私は角に新しいですし、私はこのテンプレートのうち、カスタムディレクティブを作成しようとしています:youtube-videoは別のディレクティブですアンギュラ - どのようにカスタムディレクティブ

 <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="youtubePlayer" player-vars="playerVars" class="video"></youtube-video> 
     <div ng-hide="videoPlaying" class="iframe-overlay" ng-click="playVideo(youtubePlayer)"> 
     <img ng-hide="videoPlaying" class="play" src="icons/play.svg"/> 
     <img ng-hide="videoPlaying" class="playButton" src="icons/playRectangle.svg"/> 
     </div> 

この場合、私はyoutube-angular-embedパッケージを使用しています。 私の場合にあるURLを{{ article.external_media[0].video_id }}に、ng-srcに渡す方法は私のディレクティブの画像でどうすればいいですか? これは私がこれまでのところ、私のディレクティブで得たどのくらいです:

angular.module('coop.directives') 
.directive('youtubePlayer', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      videoPlaying: '=videoPlaying', 
      playVideo = '=playVideo' 
     }, 
     template : "<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)'><img ng-hide='videoPlaying' class='play' src='icons/play.svg'/><img ng-hide='videoPlaying' class='playButton' src='icons/playRectangle.svg'/></div>", 
     link: function (scope, element, attrs, ngModel) { 
     } 
    }; 
}); 

そして、私の見解で私はこのようなディレクティブを呼び出しています:

<youtube-player></youtube-player> 
+0

定義されていません – Ted

答えて

0

はこれを試してみてください:

scope: { 
     videoPlaying: '@videoPlaying', 
     playVideo: '@playVideo' 
    }, 
+1

私は私の指示を正しく呼んでいます、私は質問を更新しましたが、私が作っているこの指示の中の別の指示です。私はangle-youtube-embedを使用しています。そのために私はそこにyoutube-videoディレクティブを持っています。 – Marco

+0

ohhhh大丈夫です。私の答えの残りの部分はまったく助けてくれますか? –

+0

私はそれを試しましたが、以前と同じです。 – Marco

0
scope: { 
    videoPlaying: '=videoPlaying', 
    playVideo: '=playVideo' 
    article: '=article' 
}, 

テンプレートで使用できます。

今すぐあなたのビューで
template : "<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)'><img ng-hide='videoPlaying' class='play' src='icons/play.svg'/><img ng-hide='videoPlaying' class='playButton' src='icons/playRectangle.svg'/></div>", 

は、次のようなディレクティブを呼び出します。

<youtube-player video-playing="video" play-video="play" article="article"></youtube-player> 

これらのすべてのvideo, play and articlecontrollerであなたのscopeにバインドされたオブジェクトです。

+0

私はあなたの提案を試みましたが、何も変わっていません、私はまだiframeのために何も得ていません。 – Marco

1

私が理解するように、urlをngSrcに設定する必要があります。

ディレクティブに追加の商品パラメータを挿入し、それを使用してディレクティブのコントローラにURLを作成することができます。

angular.module('coop.directives') 
.directive('youtubePlayer', function() { 
return { 
    restrict: 'E', 
    scope: { 
     videoPlaying: '=videoPlaying', 
     playVideo: '=playVideo', 
     article: '=' 
    }, 
    template : "<img ng-hide='videoPlaying' ng-src='{{myUrl}}' 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)'><img ng-hide='videoPlaying' class='play' src='icons/play.svg'/><img ng-hide='videoPlaying' class='playButton' src='icons/playRectangle.svg'/></div>", 
    link: function(scope, element, attrs, ngModel) { 
    }, 
    controller: function($scope, $element, $attrs, $transclude) { 
     $scope.myUrl = 'http://i1.ytimg.com/vi/'+$scope.article.external_media[0].video_id+'/maxresdefault.jpg' 
    } 
}; 

});

ように、あなたが今、あなたのディレクティブを使用することができますあなたの{{article.external_media [0] .video_id}}はそれのように見えるので、あなたは、あなたのディレクティブでコントローラを定義していないように見えます

<youtube-player video-playing="video" play-video="play" article="article"></youtube-player> 
関連する問題