【问题标题】:Meteor Template Rendered in a package包中渲染的 Meteor 模板
【发布时间】:2015-06-11 01:16:28
【问题描述】:

是否可以这样做:

  Template.hello.rendered = function() {
    $("#timepicker-default").timepicker();
  };

在包的内部,与实际的模板名称无关。

忽略上述伪代码的任何其他问题,我想知道如何从包中选择 DOM 元素。是否可以编写一个包,可以找到具有 data-attribute 或 timepicker 类的输入元素,并生成插入该元素 id 的上述代码?

所以你可以写你的标记像

<input id="mytimepicker" type="text" data-timepicker="default">

包会处理剩下的事情。

【问题讨论】:

    标签: jquery meteor


    【解决方案1】:

    我认为最快的解决方案是使用template-extension 包。您将可以访问 onRendered 钩子,每次呈现您的应用中的任何模板时都会触发该钩子。

    $ meteor add aldeed:template-extension

    Template.onRendered(function () {
      this.$('input[data-timepicker]').timepicker();
    });
    

    将上述内容放在client 目录中的任何位置,它应该选择正在呈现的模板中设置了data-timepicker 属性的所有输入。

    如果您需要在包中使用它,只需在您的package.js 中添加api.use('aldeed:template-extension');

    【讨论】:

    • 我喜欢这种方法,但是this.$(':not([data-timepicker=""])').timepicker(); 似乎选择了所有没有设置数据时间选择器属性的输入。
    • 尝试更新的答案。另见this question
    • 这些解决方案很简单,但不是在这里。看起来渲染的回调触发了两次,不确定是否与它有关。
    • 数据属性不起作用。现在我使用的是模板扩展包和 class='timepicker'。
    • 除非有正当理由不使用课程,否则我将编辑我的问题并批准此答案。
    猜你喜欢
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多