我有一个模板
{{#if currentUser}}
<input id="datetimepicker" type="text" >
{{/if}}
我想添加
$('#datetimepicker').datetimepicker();
但是在模板方法中:
无法访问{{#if currentUser}}
的内容,因为在模板之后加载了带用户的集合。我可以使用setTimeout
,但这是非稳定的解决方案。我可以输入模板
{{#if currentUser}}
<input id="datetimepicker" type="text" >
<script>
$('#datetimepicker').datetimepicker();
</script>
{{/if}}
但这并不优雅。
如何以正确的方式捕获块{{if currentUser}}
中的内容呈现?或者也许我不应该一般使用这种语法,还有其他方式的检查是用户加载。如果是,请链接到正确的教程。
答案 0 :(得分:1)
执行此操作的方法是制作if
另一个模板的内容,然后使用该模板的onRendered
或onCreated
方法。
{{#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();
}
});