2017-06-17 59 views
1

我有一個模板流星 - 事件在{{如果currentUser}}內容加載

{{#if currentUser}} 
    <input id="datetimepicker" type="text" > 
{{/if}} 

我想要做的添加

$('#datetimepicker').datetimepicker(); 

但在模板的方法:

  • onCreated
  • onRendered

{{#if currentUser}}的內容不可訪問,因爲用戶收集是在模板之後加載的。我可以使用setTimeout,但這是非穩定的解決方案。我可以輸入模板

{{#if currentUser}} 
    <input id="datetimepicker" type="text" > 
    <script> 
     $('#datetimepicker').datetimepicker(); 
    </script> 
{{/if}} 

但這不是優雅。

如何正確捕獲塊{{if currentUser}}中的內容呈現?或者,也許我不應該通常使用這種語法,並且有其他方式檢查用戶是否加載。如果是,請鏈接到適當的教程。

回答

1

要做到這一點的方法是製作if另一個模板的內容,然後使用該模板的onRenderedonCreated方法。

{{#if currentUser}} 
    {{> datePicker}} 
{{/if}} 
... 

<template name="datePicker"> 
    <input id="datetimepicker" type="text" > 
</template> 

JS:

Template.datePicker.onCreated(() => { 
    // something 
}); 
1

@Christian弗裏茨的回答運作良好。

如果你不想因爲一些其他的問題,創建一個新的模板,你還可以在onRendered回調試試這個:

Tracker.autorun(function() { 
    if ($('#datetimepicker')[0]) { 
    $('#datetimepicker').datetimepicker(); 
    } 
});