首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VideoJS伴Meteor 0.8烈火

VideoJS伴Meteor 0.8烈火
EN

Stack Overflow用户
提问于 2014-04-13 16:34:53
回答 1查看 276关注 0票数 0

以前,当视频发生变化时,我使用呈现函数初始化videoJS。

现在在流星0.8。在创建模板时,只触发一次呈现。

问题是:模板在每个页面中使用,我在其中导航,所以它不会被重新命名,只会更改属性。

有没有办法让VideoJS在Meteor0.8中工作?

  • 对于总是触发的模板字段,类似于呈现函数。
  • 或者强制整个模板重新复制的方法。
  • 或者一种在插入助手的内容时运行回调的方法。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-13 17:08:57

我找到了一个迫使流星行为<0.8的解决办法:

使2个处理程序:

代码语言:javascript
复制
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个模板:

代码语言:javascript
复制
<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中删除模板并重新插入它。再次调用呈现并查看它的工作状态;-)

哦..。当然,呈现的方法是:

代码语言:javascript
复制
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 true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23045300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档