之前有人问过,我觉得我没有看到合适的答案。我目前在布局模板上使用{{ #if currentUser.emails.[0].verified }} show data {{else}} please verify email {{/if}}
检查用户是否已验证其电子邮件。在这种情况下,如果用户已注册,我会在屏幕之间出现闪烁,因为meteor.user()未完全加载,因此currentUser.emails.[0].verified
返回null并在完全加载后更改为true。
有没有办法可以在模板渲染之前等待Meteor.userId完全加载而不使用延迟?
答案 0 :(得分:2)
meteor嵌入式“currentUser”助手可以在用户收集准备就绪时通知您:
{{#if currentUser}}
// Do my stuff
{{else}}
Checking... // You can also show a spinner image or GIF here
{{/if}}
答案 1 :(得分:0)
通常,您可以在模板中使用Template.subscriptionsReady
来包装依赖于订阅数据的代码。由于Meteor自动处理currentUser的发布/订阅,我不确定这种方法是否有效。试一试,让我知道。
实施例
{{#if Template.subscriptionsReady}}
{{ #if currentUser.emails.[0].verified }} show data {{else}} please verify email {{/if}}
{{/if}}
答案 2 :(得分:0)
我发现对我来说效果很好的是在铁路由器的waitOn函数中等待用户等待:
Router.route('/',{
waitOn: [
function() {
if (!Meteor.userId()) {
Router.go("/login");
}
return Meteor.subscribe('currUser');
},
],
...
})