【发布时间】:2017-07-30 17:20:24
【问题描述】:
我有以下模板代码:
<template name="dashboard">
<div class="content-container-with-sidebar clearfix">
<div class="dashboard-container">
{{#if Template.subscriptionsReady}}
<div id=masonry-grid class="masonry-grid clearfix">
{{> timePieChartCard}}
{{> expensePieChartCard}}
{{> HighlightsCard}}
{{> initializeMasonry}}
</div>
{{/if}}
</div>
</div>
</template>
我想在所有模板及其订阅/帮助程序加载到主仪表板模板中之后运行 masonry 库的初始化程序。
每张卡都有类似这样的代码:
<template name="HighlightsCard">
{{#if highlightsExist}}
<div class="col-md-6 masonry-grid-item">
<div class="card highlights-card">
</div>
</div>
{{/if}}
</template>
Template.highlightsCard.onCreated(function() {
this.autorun(() => {
this.subscribe('userOwnClientHighlightsData');
});
});
Template.highlightsCard.helpers({
highlights() {
return Highlights.find({}, {
limit: 4,
sort: {createdAt: -1}
}).fetch();
},
highlightsExist() {
return (Highlights.find().count() > 0);
}
});
我目前正在设置一个会话,当每个 onRendered 在卡片模板中运行时,会话会增加,但是一旦它们全部渲染,它们的内容仍然没有加载。我需要类 masonry-grid-item 可见,以便我初始化砌体。
获得与 jquery 的 $(document).ready() 类似结果的最佳方法是什么?
更新:仪表板模板中的每张卡片都有自己对不同数据集的订阅。
【问题讨论】:
标签: javascript templates meteor