0

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

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

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');
    });
  });
};
4

1 回答 1

1

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

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

<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>
于 2014-05-16T14:20:37.360 回答