2014-10-24 2 views
1

내 경로가 변경 될 때마다 Router.onAfterAction으로 일부 세션 변수를 업데이트 중입니다. 그런 다음 Tracker.autorun()에서 변경을 기다리고 일부 논리를 실행하고 일부 DOM 클래스를 업데이트 할 수 있습니다. 세션이 올바르게 설정되었고 첨부 할 요소가 올바르게 타겟팅되었는지 확인했습니다. 하지만 내 addClass()는 트리거하지 않습니다. 콘솔 오류가 없습니다. 내가 뭘 놓치고 있니?Tracker.autorun() jQuery 함수를 실행하지 않음

Tracker.autorun(function (c) { 

    var colActive = Session.equals('navColumnActive', true); 
    var colVisible = Session.equals('navColumnVisible', true); 
    var $col = $("#nav-column"); 
    console.log($col); 


    if (colActive) { 
    console.log("if triggered"); 
    $col.addClass("active"); 
    } else { 
    console.log("else triggered"); 
    $col.removeClass("active"); 
    } 
    if (colVisible) { 
    $col.addClass("visible"); 
    } else { 
    $col.removeClass("visible"); 
    } 
}); 
+0

가이 일을 시작!?! 나는 이것을 재현 할 수 있는지, 그리고 그것이 나의 버그인지, 유성의 버그인지를 판단하여보고 할 것인지를 알게 될 것이다. – benstr

+0

JQuery를 사용하는 대신 헬퍼를 사용하여 열에 클래스를 설정하는 것은 어떻습니까? – stubailo

+0

@stubailo 왜냐하면 흥미롭지는 않을 것입니다. :) 맞습니다. 디버깅 할 시간이 없습니다. 구조 대원. – benstr

답변

0

나는 최근에 같은 문제가 발생했습니다. 제 경우에는 반응 값이 DOM과 요소가 제대로 렌더링되기 전에 실행되는 계산을 트리거합니다.

DOM을 렌더링 한 후에 세션 변수가 설정되어 있는지 확인합니다. 따라서 브라우저 콘솔에서 실행될 때 $col = $("#nav-column")과 같은 셀렉터는 빈 상태로 돌아 왔지만 완벽하게 작동했습니다.

은 다음을 시도해 볼 수도 있습니다 :

나는 유성을 다시 시작했고,
Template.<template_name>.onRendered(function() { 
    Session.set('navColumnActive', true); 
    Session.set('navColumnVisible', true); 
}) 
관련 문제