Meteor-加载的{if currentUser}}内容上的事件

Meteor-加载的{if currentUser}}内容上的事件,meteor,meteor-blaze,meteor-accounts,meteor-useraccounts,Meteor,Meteor Blaze,Meteor Accounts,Meteor Useraccounts,我有一个模板 {{#if currentUser}} <input id="datetimepicker" type="text" > {{/if}} 但在模板的方法中: 再次创建 OnRender {{{#if currentUser}}的内容不可访问,因为在模板之后加载了带有user的集合。我可以使用setTimeout,但这是一个不稳定的解决方案。我可以输入模板 {{#if currentUser}} <input id="datetimepicke

我有一个模板

{{#if currentUser}}
    <input id="datetimepicker" type="text" >
{{/if}}
但在模板的方法中:

  • 再次创建
  • OnRender
{{{#if currentUser}}
的内容不可访问,因为在模板之后加载了带有user的集合。我可以使用
setTimeout
,但这是一个不稳定的解决方案。我可以输入模板

{{#if currentUser}}
    <input id="datetimepicker" type="text" >
    <script>
        $('#datetimepicker').datetimepicker();
    </script>
{{/if}}
{{{#if currentUser}
$(“#datetimepicker”).datetimepicker();
{{/if}
但这并不优雅


如何以正确的方式捕获块
{{if currentUser}
中内容的呈现?或者我不应该一般地使用这种语法,还有其他方式检查是否加载了用户。如果是,请链接到适当的教程

方法是将
if
的内容制作成另一个模板,然后使用该模板的
onRendered
onCreated
方法

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

Template.datePicker.onCreated(()=>{
//某物
});

@Christian Fritz的答案很有效

如果由于某些其他问题而不想创建新模板,也可以在
onRendered
回调中尝试此操作:

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