如何让Meteor为许多模板链接添加属性?

时间:2014-05-16 06:09:32

标签: templates meteor meteor-blaze

我试图将属性添加到许多外部链接。下面的代码在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');
    });
  });
};

1 个答案:

答案 0 :(得分: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>