以前,当视频发生变化时,我使用呈现函数初始化videoJS。
现在在流星0.8。在创建模板时,只触发一次呈现。
问题是:模板在每个页面中使用,我在其中导航,所以它不会被重新命名,只会更改属性。
有没有办法让VideoJS在Meteor0.8中工作?
发布于 2014-04-13 17:08:57
我找到了一个迫使流星行为<0.8的解决办法:
使2个处理程序:
UI.registerHelper "handler1", (data) ->
Session.set("loading", true);
UI.registerHelper "handler2", (data) ->
if Session.get("loading")
Session.set("loading", false);
return true
else
return false定义2个模板:
<template name="videoPlayer">
{{handler1 seed="videourl"}}
{{#if handler2}}
Loading Player...
{{else}}
{{> videoPlayerInternal}}
{{/if}}
</template>
<template name="videoPlayerInternal">
<!-- VideoJS-Player-Code -->
</template>现在,我可以挂起呈现的videoPlayerInternal方法,它的工作方式类似于meteor < 0.8。
这样做是因为:
在初始化过程中,只调用handler1。这将变量“加载”设置为true。
在此之后,我有一个if-然后-否则,在初始状态显示一个加载文本。由于条件是由具有副作用的助手计算的(将会话变量加载设置为false),在此之后将立即调用它。
因此,如果我用另一个视频url加载另一个完全相同的页面,它需要重新运行handler1,将会话变量再次设置为true,从而从dom中删除模板并重新插入它。再次调用呈现并查看它的工作状态;-)
哦..。当然,呈现的方法是:
Template.videoPlayerInternal.rendered = ->
videojs.options.flash.swf = "/video-js.swf"
# Delete old players and reset.
if videojs.players.videoJsPlayer
videojs.players.videoJsPlayer.dispose()
# Initialize the player
$vid_obj = _V_ "videoJsPlayer", {}, ()->
console.log "video is ready.";
return truehttps://stackoverflow.com/questions/23045300
复制相似问题