【问题标题】:Meteor - event on {{if currentUser}} content loadedMeteor - 加载 {{if currentUser}} 内容的事件
【发布时间】:2017-06-22 04:57:54
【问题描述】:

我有一个模板

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

我想添加

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

但是在模板的方法中:

  • 已创建
  • onRendered

{{#if currentUser}} 的内容不可访问,因为用户的集合是在模板之后加载的。我可以使用setTimeout,但这是不稳定的解决方案。我可以输入模板

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

但这并不优雅。

如何以正确的方式捕获块{{if currentUser}} 中的内容呈现?或者也许我不应该通常使用这种语法,并且还有其他方式来检查用户是否已加载。如果是,请链接到正确的教程。

【问题讨论】:

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


    【解决方案1】:

    这样做的方法是将if 的内容制作成另一个模板,然后使用该模板的onRenderedonCreated 方法。

    {{#if currentUser}}
        {{> datePicker}}
    {{/if}}
    ...
    
    <template name="datePicker">
      <input id="datetimepicker" type="text" >
    </template>
    

    JS:

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

    【讨论】:

      【解决方案2】:

      @Christian Fritz 的回答效果很好。

      如果您因为其他问题不想创建新模板,也可以在onRendered 回调中尝试:

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

      【讨论】:

        猜你喜欢
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多