【问题标题】:Marionette js: how to render an HTML5/javascript video playerMarionette js:如何渲染 HTML5/javascript 视频播放器
【发布时间】:2013-11-14 16:52:47
【问题描述】:

一些流行的商用 HTML5 视频播放器本质上是 JavaScript 的大块。 JWPlayer 就是其中之一。我使用的是不同的,但设置相似。

这些播放器的嵌入方式似乎与一般客户端 MVC 框架格格不入。玩家想要将自己渲染到 DOM。您实例化一个播放器对象并将一个 DOM 元素传递给它的构造函数。喜欢...

    mediaPlayer = new CommercialVideoPlayer("some-place-in-DOM");

然后播放器将自己渲染到“DOM 中的某个位置”。

这不会与 Marionette 中的视图渲染冲突 - 区域管理器显示视图吗?

换句话说,这个“玩家渲染自身”的东西,乍一看,似乎与木偶想要渲染的概念相冲突。它希望其区域管理器将视图映射到 DOM 元素。它不希望某些玩家在 DOM 中粘贴东西。

它想做...

    someRegion.show(someView);

我并没有想通我的 HTML5 视频播放器的位置?在视图内?

当我把它放在一个视图中然后尝试显示它时,比如......

    videoRegion.show(videoView);//media player is inside videoView

...我一无所获,因为木偶的区域经理和玩家正在为谁在哪里渲染而争吵。

我想我只是对 Marionette js 想要我用这个媒体播放器做什么缺乏概念上的理解。我正在寻求理解和最佳实践。

【问题讨论】:

    标签: dom html5-video marionette


    【解决方案1】:

    Marionette 区域经理想要显示 Marionette 视图。时期。他们不关心这些视图的作用。

    换句话说,您可以让视图创建 DOM 元素,然后显示视频播放器,例如:

    var VideoView = Marionette.ItemView.extend({
      template: _.template('<div id="video-player"></div>'),
    
      onShow: function(){
        this.mediaPlayer = new CommercialVideoPlayer("some-place-in-DOM");
      }
    });
    
    var myVideoView = new VideoView();
    
    videoRegion.show(myVideoView);
    

    以上是未经测试的伪代码,但应该能让你朝着正确的方向前进。

    【讨论】:

    • 似乎合乎逻辑。但这不起作用,因为尽管 Marionette 不在乎视图的作用,但玩家却在乎。它不想呈现自己,除非它的容器 div (id="video-player) 存在于 DOM 中。在 onShow 中它还没有被插入到 DOM 中。我已经通过完全移除木偶并只是嵌入来测试这一点播放器在纯 html 页面中。如果我删除播放器的容器 div,“video-player”,如果我运行上面的 marionette onShow 代码,我会得到相同的错误。这是两个第三方库的情况之一有点矛盾。有点鸡和蛋的问题
    • 在我的播放器尝试找到该容器元素之前,我需要一些木偶方式来呈现我的模板。
    • 我的错。其他小错误。认为这可能有效。现在检查。
    • 是的。这行得通。我忘记在你的 itemView 周围设置额外的 div marionette 的样式。默认情况下它没有大小,所以我的视频播放器没有出现。将 className: "fullsize" 添加到 itemView 并在其中给它一些大小。都好。非常感谢您的洞察力。
    猜你喜欢
    • 2017-06-18
    • 2019-08-13
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2012-05-06
    • 1970-01-01
    • 2015-08-02
    相关资源
    最近更新 更多