2015-11-17 92 views
0

我試圖在模板呈現後運行一些jQuery代碼。但它不起作用。當我手動在控制檯中運行代碼時,它可以工作。這裏的JS:流星停止運行模板呈現功能

Template.PanelLayout.helpers({ 
    restricted: function() { 
     return !Meteor.user(); 
    }, 
    authInProcess: function() { 
     return Meteor.loggingIn(); 
    }, 
    canShow: function() { 
     return !!Meteor.user(); 
    } 
}); 

Template.PanelLayout.rendered = function() { 
    $(document).ready(function() { // This is the code I want to run 
     $(".button-collapse").sideNav(); 
     $('.collapsible').collapsible(); 
    }); 
} 

模板代碼:

<template name="PanelLayout"> 
    {{#if restricted}} 
     {{> NotFound}} 
    {{else}} 
     {{#if authInProcess}} 
      {{> spinner}} 
     {{else}} 
      {{#if canShow}} 
       <header> 
        {{> PanelMainNav}} 
       </header> 
       <main id="panel-content"> 
        {{> Template.dynamic template=content }} 
       </main> 
      {{/if}} 
     {{/if}} 
    {{/if}} 
</template> 

林不知道,但我想這是因爲我已經加入了,如果else語句僅當用戶登錄加載的內容?我怎樣才能解決這個問題?

回答

1

也許這是因爲渲染功能文檔之後被稱爲是準備好了,所以你的鉤子document.ready將無法​​正常工作,您應該刪除它,所以它看起來像這樣(也rendered功能已被棄用,使用onRendered代替):

Template.PanelLayout.onRendered(function() { 
    $(".button-collapse").sideNav(); 
    $('.collapsible').collapsible(); 
}); 
+0

感謝它的工作:-)除了該代碼,我還有'onRendered'上的另一個代碼。但是當我再次訪問它的頁面時,它不會加載。只在第一次訪問時運行。這是一個動態模板,我使用流量路由器。 – THpubs

+0

我並不是很熟悉流量路由器,所以我不知道可能是錯誤的; / – Sindis