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