在模板呈现之前等待 Meteor.user() 完全加载
Wait for Meteor.user() to completely load before template renders
之前有人问过这个问题,但我觉得我没有看到合适的答案。我目前在布局模板上使用 {{ #if currentUser.emails.[0].verified }} show data {{else}} please verify email {{/if}}
检查用户是否已验证他们的电子邮件。在这种情况下,如果用户已注册,我会在屏幕之间闪烁,因为 meteor.user() 尚未完全加载,因此 currentUser.emails.[0].verified
returns null 并在完全加载后更改为 true .
有没有一种方法可以在不使用延迟的情况下等待 Meteor.userId 在模板呈现之前完全加载?
通常,您可以在模板中使用 Template.subscriptionsReady
来包装依赖于订阅数据的代码。由于 Meteor 自动处理 currentUser 的 publish/subscribe,我不确定这个方法是否有效。试试看,让我知道。
示例。
{{#if Template.subscriptionsReady}}
{{ #if currentUser.emails.[0].verified }} show data {{else}} please verify email {{/if}}
{{/if}}
内嵌的 meteor "currentUser" 帮助程序可以让您知道用户集合何时准备就绪:
{{#if currentUser}}
// 做我的事
{{别的}}
正在检查... // 您还可以在此处显示微调图片或 GIF<br>
{{/if}}
我发现对我来说效果很好的是在 iron router 的 waitOn 函数中订阅等待中的用户:
Router.route('/',{
waitOn: [
function() {
if (!Meteor.userId()) {
Router.go("/login");
}
return Meteor.subscribe('currUser');
},
],
...
})
之前有人问过这个问题,但我觉得我没有看到合适的答案。我目前在布局模板上使用 {{ #if currentUser.emails.[0].verified }} show data {{else}} please verify email {{/if}}
检查用户是否已验证他们的电子邮件。在这种情况下,如果用户已注册,我会在屏幕之间闪烁,因为 meteor.user() 尚未完全加载,因此 currentUser.emails.[0].verified
returns null 并在完全加载后更改为 true .
有没有一种方法可以在不使用延迟的情况下等待 Meteor.userId 在模板呈现之前完全加载?
通常,您可以在模板中使用 Template.subscriptionsReady
来包装依赖于订阅数据的代码。由于 Meteor 自动处理 currentUser 的 publish/subscribe,我不确定这个方法是否有效。试试看,让我知道。
示例。
{{#if Template.subscriptionsReady}}
{{ #if currentUser.emails.[0].verified }} show data {{else}} please verify email {{/if}}
{{/if}}
内嵌的 meteor "currentUser" 帮助程序可以让您知道用户集合何时准备就绪:
{{#if currentUser}}
// 做我的事
{{别的}}
正在检查... // 您还可以在此处显示微调图片或 GIF<br>
{{/if}}
我发现对我来说效果很好的是在 iron router 的 waitOn 函数中订阅等待中的用户:
Router.route('/',{
waitOn: [
function() {
if (!Meteor.userId()) {
Router.go("/login");
}
return Meteor.subscribe('currUser');
},
],
...
})