#each
完成后,我在回调方面遇到麻烦。我有一个名为“内容”的模板:
<template name="content">
{{#if Template.subscriptionsReady}}
{{#each currentData}}
<div data-cid="{{this._id}}"></div>
{{/each}}
{{else}}
Loading...
{{/if}}
</template>
首先,我等待订阅,如果有订阅,我会使用遍历我的Collection{{#each}}
并附加div
。我需要一种用于for-each循环完成时的回调(换句话说,DOM准备就绪)。
Template.content.onRendered()
->触发早
我还尝试过在{{each}}之后添加图片,并以如下方式触发函数onload
:
<img style="height:0;width:0" src="*mysource*" onload="callback()">
->有时可以工作,但不可靠
有没有办法获取此回调?如果可以带来解决方案,我不担心更改此模板的结构。
我遇到了类似的问题,经过大量搜索后发现以下解决方案。我尝试使用Tracker
,onRendered
和其他技巧,没有一次成功。可以认为这更像是骇客,但可以。不幸的是,我不记得最初在哪里找到此解决方案。
从模板开始,但在后面添加模板标签each
。
<template name="content">
{{#if Template.subscriptionsReady}}
{{#each currentData}}
<div data-cid="{{this._id}}"></div>
{{/each}}
{{doneTrigger}}
{{else}}
Loading...
{{/if}}
</template>
然后定义一个返回null的助手。
Template.content.helpers({
doneTrigger: function() {
Meteor.defer(function() {
// do what you need to do
});
return null;
}
});
您可以Meteor.defer()
在此处了解更多信息,但这等效于使用0毫秒setTimeout
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句