【发布时间】:2015-04-03 01:08:24
【问题描述】:
我有一个包含多个条件的 Meteor 模板,当它最初加载时,我得到一些条件视图的闪烁。
我正在使用 Iron 路由器,我知道订阅、wait() 和 ready() 选项,但是问题之一是主要条件 isInstalled 依赖于 meteor.call 回调来设置isInstalled 变量,因此等待不依赖于订阅。那么我该如何解释这个用例呢?
<template name="adminLayout">
{{#if isInstalled}}
{{#if currentUser}}
{{> adminHeader}}
<br /><br />
<div class="row">
<div class="medium-3 columns">
{{> adminNav}}
</div>
<div class="medium-9 columns">
{{> yield}}
</div>
</div>
<div class="row">
<div class="medium-12 columns">
{{> adminFooter}}
</div>
</div>
{{else}}
{{> login}}
{{/if}}
{{else}}
{{> install}}
{{/if}}
</template>
这是我的模板助手,说明了我如何为isInstalled 提供值
Meteor.call('isInstalled', function (err, result) {
if (err) {
console.log(err);
}
Session.set('isInstalled', result);
});
Template.adminLayout.helpers({
isInstalled: function () {
return Session.get('isInstalled');
}
});
最后是路线:
Router.route('/admin', function () {
this.layout('adminLayout');
this.render('dashboard');
});
【问题讨论】:
-
一个简单的解决方法是隐藏 div,然后在脚本运行时显示它。
标签: javascript meteor iron-router