尝试使用 ng-view 模板让 videoJS 在角度指令中工作。Angular 路由和模板注入都运行良好。
html代码:
<div ng-view>
</div>
模板代码:
<div ng-controller="VideoCntrl">
<div class="row offset2" >
<video id='myVideo' videodir controls class="video-js vjs-default-skin" >
<source src="{{video.videoURL}}" type="video/mp4" />
</video>
</div>
</div>
指令代码
app.directive('videodir',function(){
var linkFn;
linkFn = function (scope, element, attrs){
videojs("myVideo",{"techOrder": ["html5","flash"]},function(){
this.src({type: "video/mp4", src: scope.video.videoURL});
console.log(scope.video.videoURL);
});
console.log('linkfn');
};
return {
restrict: 'A',
link: linkFn
}
});
指令 videodir 中的 videojs 就绪功能仅在第一次点击页面或重新加载页面时触发。第一次点击我的页面时,我在控制台中看到来自 scope.video.videoURL 的视频的 url,并且 DOM 正在使用 videoJS。如果我单击导航链接以加载不同的模板然后返回,则不会触发 videojs 就绪功能(即我在控制台日志中没有看到我的 videoURL,并且 DOM 没有被 videoJS 更改。我确实看到了 'linkFn ' 每次加载模板代码时在控制台中。我假设在我正在执行 console.log('linkFn') 的指令中,我可以在 videojs("myVideo") 对象上调用一些初始化代码,以便它操作DOM 正确,但我不知道那可能是什么。
非常感谢任何帮助。