更新
伙计们对代码进行了一些更改,并意识到我可以使用ng-if
来显示我需要的内容。已经回答here。
我需要一个指示,显示来自live if的数据,否则显示来自最后一个视频的数据,通过根据条件响应更改指令范围。
我试过这样的事情:
directive.js
var directive = {
link: link,
restrict: 'EA',
templateUrl: 'path',
scope: {
video: '='
}
};
return directive;
function link(scope, element, attrs) {
if(scope.video == 'undefined') {
scope.video = NEW_SCOPE; //e.g 'vm.live.items'
}
}
directive.html
<div class="container">
<div class="video-description">
<h4>{{video.snippet.title}}</h4>
</div>
</div>
范围参考
<live-iframe video="vm.activity.items"></live-iframe>
我正在使用Youtube数据API(v3)。
要获取最后一个视频,我使用activities.list方法,该方法会返回上次上传的视频中的ID。 之后,我使用videos.list方法,使用activities.list方法返回的ID,并将其用作参数来获取最后一个视频。 (即时通讯使用这两种方法,因为第一种方法不会将视频统计信息视为视图,喜欢等)
要获得直播,我想使用search.list方法返回直播内容(包括ID),但由于this我无法使用它。
正如audiomason在answer上说的那样,为了获得直播,我在iframe的src属性上使用了一个url,它返回了一个频道的直播(如果它不在那一刻,它会返回一些默认屏幕,例如&#39;直播结束&#39;)。
但它只返回现场,我也想要标题。因此,要使用https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID
进行直播,并获取实时标题,即时使用youtube api的search.list方法。
返回上一个视频
返回现场
https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID
我做了两个函数,第一个更改了embed url
function checkIfLive() {
var liveIframe = '<iframe class="liveIframe" width="480" height="270" src="https://www.youtube.com/embed/live_stream?channel=UC8racR0Ko9HzKpIBAPvifKw" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>';
if (vm.live.items[0] == undefined) {
$(".video").append( vm.activity.items[0].player.embedHtml );
} else {
$(".video").append( liveIframe );
}
}
第二个改变了范围,留下了我的问题。
function link(scope, element, attrs) {
if(scope.video == 'undefined') {
scope.video = NEW_SCOPE; //e.g 'vm.live.items'
}
}