2014-04-13 2 views
0

이전에 비디오가 변경되었을 때 렌더링 된 함수를 사용하여 videoJS를 초기화했습니다.VideoJS with Meteor 0.8 Blaze

유성기 0.8. 렌더링 된 템플릿은 템플릿을 만들 때 한 번만 실행됩니다.

문제는 다음과 같습니다. 각 페이지에서 템플릿을 사용하고 탐색하므로 결코 다시 렌더링되지 않고 속성 만 변경됩니다.

Meteor 0.8에서 VideoJS를 사용할 수있는 방법이 있습니까? 항상

  • 또는 방법을 발사 템플릿 필드에 대한

    • 뭔가 같은 렌더링 기능은 도우미의 내용이 삽입 될 때 콜백을 실행하는
    • 또는 방법을 다시 쓰게 전체 템플릿을 강제로.

      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 템플릿 정의 :

      만들기 2 핸들러 :

  • +1

    _id 변경하는 경우 각}} 블록을 표시하면 DOM 요소가 다시 사용되지 않으므로 'render'이벤트가 발생합니다. 토론 [여기] (https://groups.google.com/forum/#!searchin/meteor-talk/$23each$20video%7Csort:date/meteor-talk/bheOi3EmPeE/VsI_8sD0zAEJ). – user728291

    답변

    0

    나는 솔루션 유성 <의 동작 0.8을 강제로 발견 이제

    <template name="videoPlayer"> 
        {{handler1 seed="videourl"}} 
        {{#if handler2}} 
         Loading Player... 
        {{else}} 
         {{> videoPlayerInternal}} 
        {{/if}} 
    </template> 
    
    <template name="videoPlayerInternal"> 
        <!-- VideoJS-Player-Code --> 
    </template> 
    

    을, 내가 할 수있는 videoPlayerInternal의 렌더링 된 메서드를 후크하여 유성 < 0.8처럼 작동합니다.

    초기화시 handler1 만 호출됩니다. 그러면 변수 "loading"이 true로 설정됩니다.

    그 후 초기 상태에서로드 텍스트를 표시하는 if-then-else가 있습니다. 조건은 부작용이있는 도우미에 의해 계산되기 때문에 (세션 변수 로딩을 false로 설정) 이후에 immediatly 호출됩니다.

    다른 비디오 URL로 정확히 같은 다른 페이지를로드하는 경우 처리기 1을 다시 실행해야합니다. 세션 변수를 다시 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 true 
    
    관련 문제