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

时间:2017-06-17 03:51:31

标签: meteor meteor-blaze meteor-accounts meteor-useraccounts

我有一个模板

{{#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}}中的内容呈现?或者也许我不应该一般使用这种语法,还有其他方式的检查是用户加载。如果是,请链接到正确的教程。

2 个答案:

答案 0 :(得分:1)

执行此操作的方法是制作if另一个模板的内容,然后使用该模板的onRenderedonCreated方法。

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

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

JS:

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

答案 1 :(得分:1)

@Christian Fritz的答案很有效。

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

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