2014-01-19 82 views
1

在一個項目中,我們使用Meteor App中的VideoJS播放器播放一些視頻。我們有一個播放列表來瀏覽視頻。問題是,當模板重新渲染時,播放器無法在此之後再次初始化。VideoJS,流星和模板的重新渲染

我寫了一個模板文件和coffescript部分爲:

<template name="videoPlayer"> 
<video id="videoJsPlayer" class="video-js vjs-default-skin" 
    controls preload="auto" width="572" height="350" 
    poster="...file.jpg" 
    > 
    <source src="...video.mp4" type='video/mp4' /> 
</video> 
</template> 

我已經嘗試過的ID, 工作,但我回來的時候,以相同的視頻的ID將是相同的。 和咖啡腳本:

Template.videoPlayer.rendered = -> 
    videojs.options.flash.swf = "/video-js.swf" 

    $vid_obj = _V_ "videoJsPlayer", {},()-> 
     console.log "Player Loaded" 

    $vid_obj.ready() -> 
     console.log("Element ready"); 

我也試圖把「vid_obj」的地方全局和調用videojs「破壞()」方法之前。這給出了一個錯誤,即destroy()不存在。另外一個V .players = {}刪除所有播放器綁定不起作用。

回答

1

我已經解決了我的問題。訣竅不是在模板上應用該樣式。

我通過jQuery添加了視頻播放器:

if videojs.players.videoJsPlayer 
    videojs.players.videoJsPlayer.dispose() 

$v = $(".videoPlayerFrame") 

$v.html("").append $("<video id=\"videoJsPlayer\" class=\"video-js vjs-default-skin \">") 
    .attr("controls", true) 
    .attr("preload", "none") 
    .attr("width", $v.attr("data-width")) 
    .attr("height", $v.attr("data-height")) 
    .attr("poster", $v.attr("data-poster")) 
    .append("<source src=\""+$v.attr("data-video")+"\" type=\"video/mp4\" />") 


$vid_obj = _V_ "videoJsPlayer", {},()-> 
    # console.log "video #{vid} is ready."; 
    console.log "Element Loaded" 
0

嘗試添加該代碼,

Template.videoPlayer.destroyed = function() { 
    var mPlayer = vidoejs("#playerId"); 
    mPlayer.dispose(); 
} 

每次流星渲染它摧毀,創造了球員的模板。我希望這不會發生在新的流星渲染器Shark中。

+0

這是行不通的。沒有錯誤,只是不工作。還嘗試在初始化之前添加該代碼,但刪除標籤。 – Tobi