Angularjs - 视频在绑定内部时未播放

时间:2014-12-11 16:16:20

标签: javascript angularjs angularjs-directive angularjs-scope html5-video

我有一个播放html5视频的视频指令:

    (function(){
    angular.module('app.video')
                .directive('demoVideo', demoVideo);


    function demoVideo(){
        return{
            templateUrl: "videoTemplate.html",
            controller: function(videoService, $sce){
                var vm = this;
                videoService.get().then(function(data){
                    vm.videoDataUrlMp4 = $sce.trustAsResourceUrl(data.video);//"http://pdl.vimeocdn.com/89496/595/203684545.mp4?token2=1418313891_4826d99475da5695f5d7999863fb212c&aksessionid=732c8c4ae38ae4aa"
                });
            },
            bindToController: true,
            controllerAs: 'video'  
        }
    }    

})();

模板是:

<script type="text/ng-template" id="videoTemplate.html">
<video id="video" controls="true">
        <source id="mp4" ng-src="{{ video.videoDataUrlMp4 }}" type="video/mp4">
        <p>Your user agent does not support the HTML5 Video element.</p>
</video>

问题是未加载视频。 (我可以看到src被设置为视频源,但它没有被加载。当我将绑定更改为直接(不在回调中)时,它确实有效!

我尝试了$ scope。$ apply()没有运气(抛出错误)。

我在这里缺少什么?

TNX!

1 个答案:

答案 0 :(得分:0)

您是否尝试过返回值?

像这样:

     videoService.get().then(function(data){
                    vm.videoDataUrlMp4 = $sce.trustAsResourceUrl(data.video);//"http://pdl.vimeocdn.com/89496/595/203684545.mp4?token2=1418313891_4826d99475da5695f5d7999863fb212c&aksessionid=732c8c4ae38ae4aa";
                    return vm.video.DataUrlMp4;
                });