Javascript Youtube Iframe内部流星模板

Javascript Youtube Iframe内部流星模板,javascript,iframe,meteor,youtube-api,Javascript,Iframe,Meteor,Youtube Api,我试图在模板中创建youtube iframe,并从多个页面调用该模板。我可以在第一页加载时加载视频(无论我从何处调用playertemplate),但只要我从一个有player模板的页面导航到另一个页面,iframe dom就会被删除,并且在刷新之前不会再次加载 我最初的假设是,它之所以会崩溃,是因为onyoutubeiframeapiredy只被调用一次,而iron router正在兑现dom元素 模板: <template name="player"> <div cl

我试图在模板中创建youtube iframe,并从多个页面调用该模板。我可以在第一页加载时加载视频(无论我从何处调用
player
template),但只要我从一个有
player
模板的页面导航到另一个页面,iframe dom就会被删除,并且在刷新之前不会再次加载

我最初的假设是,它之所以会崩溃,是因为
onyoutubeiframeapiredy
只被调用一次,而iron router正在兑现dom元素

模板

<template name="player">
  <div class="template-banner">
    <div class="video-container" id="player">
    </div>
  </div>
</template>

模板.player.onRendered
回调中创建播放器。Meteor不会重新呈现用户在站点周围导航时不需要重新呈现的模板。因此,当
player
模板最初呈现时,您的代码只会被调用一次。@fuzzybabybunny当我在站点周围导航时,我可以看到控制台日志显示“creating player…”,这是在create Method中。您将在
template.player.onRendered
回调中创建播放器。Meteor不会重新呈现用户在站点周围导航时不需要重新呈现的模板。因此,当
player
模板最初呈现时,您的代码只会被调用一次。@fuzzybabybunny当我在站点中导航时,我可以看到控制台日志显示“creating player…”,它位于create方法中
downloadIFrameAPI = _.once(->
  Meteor.startup ->
    $.getScript '//www.youtube.com/iframe_api'
    return
  return
)
Player =
  create: (playerId, videoTemplate, video) ->
    window.onYouTubeIframeAPIReady = ->
      console.log 'creating player...'
      window.player = new (YT.Player)(playerId,
        width: '560'
        height: '349'
        events:
          onReady: ->
            console.log 'Player Loaded'
            Player.loadVideo(video)
      )
      videoTemplate.rendered = onYouTubeIframeAPIReady

    downloadIFrameAPI()
  loadVideo: (video) ->
    player.loadVideoByUrl
      mediaContentUrl: video


Template.player.onRendered ->
  Player.create 'player', Template.player, this.data.video