【问题标题】:How can I have Meteor add an attribute to many template links?如何让 Meteor 向许多模板链接添加属性?
【发布时间】:2014-07-04 19:29:21
【问题描述】:

我正在尝试为许多外部链接添加一个属性。下面的代码在 Blaze 之前工作,现在只运行一次 Template.rendered(但下面的代码甚至不能按预期运行一次)。

那么,一旦页面被渲染,那么向 许多 链接添加属性的替代方法是什么,或者现在使用 Meteor 执行此操作的正确方法是什么?顺便说一句,我研究了很多东西,包括这个example app from the author,如果它有答案,我没有看到它。

Template.layout.rendered = function () {
  console.log('CALLED');                  // runs
  $(document).ready(function () {
    console.log('NOW THIS');              // runs
    $('a.external').each(function () {
      console.log('NOT CALLED');          // doesn't run
      $(this).attr('target', '_blank');
    });
  });
};

【问题讨论】:

    标签: templates meteor meteor-blaze


    【解决方案1】:

    有几种方法可以解决这个问题,但没有一种方法是完美的。值得注意的是,这个问题已经被提出,并且很可能会通过 here 提议的自定义事件来解决。

    目前,最简单的方法是将需要调整的每个元素移动到单独的模板中。所以而不是:

    <template name="layout">
      {{#each links}}
        <a class="external" ...>
      {{/each}}
    </template>
    

    你将拥有:

    <template name="layout">
      {{#each links}}
        {{> layout_externalLink}}
      {{/each}}
    </template>
    
    <template name="layout_externalLink">
      <a class="external" ...>
    </template>
    

    【讨论】:

    • 嗯,这很糟糕,因为我们还需要能够将 Twitter 按钮添加到文章中,这也需要类似于我所询问的内容。
    • 你应该可以通过扩展这个模式来做到这一点。或者您可以等待 Blaze 更新。
    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多