Javascript 铁路由器waitOn Meteor.user()
我会在data iron router中使用Meteor.user(),但这在开始时是未定义的 我正在尝试:Javascript 铁路由器waitOn Meteor.user(),javascript,meteor,iron-router,Javascript,Meteor,Iron Router,我会在data iron router中使用Meteor.user(),但这在开始时是未定义的 我正在尝试: waitOn: function() { return curretUserHandle; }, data: function() { // access to Meteor.user().username, give me undefined [...] var curretUserHandle = { ready: function () {
waitOn: function() {
return curretUserHandle;
},
data: function() {
// access to Meteor.user().username, give me undefined
[...]
var curretUserHandle = {
ready: function () {
return 'undefined' !== typeof Meteor.user();
}
};
但route的数据函数总是在curretUserHandle.ready()返回true之前调用
我知道我可以在数据中添加if(Meteor.user()),但是这个选项不喜欢
为什么数据不等待Meteor.user()准备就绪?只能作为解决方法使用:
if(this.ready())
在数据
函数中添加“神奇地”解决了这个问题
但是,请阅读关于必要安全措施的说明:
您有
路由器.onBeforeAction('load')
吗?没有它,waitOn
不会等待。是的@PeppeL-G,我有:loadingTemplate:'Loading'
和Router.onBeforeAction('Loading')代码>。。。只有当用户直接进入路由或刷新页面(F5)时,问题才会出现。我很好奇,为什么您会让hadle变得如此复杂。我非常确定,您所需要的只是返回!!Meteor.user()
.ehehe。。。你有权@apendua。我从另一个地方进行了复制和粘贴,我不关心代码…但问题仍然存在:(@elbowz-Hmm这很神秘。我相信它只解决了在第一页刷新时运行的iron路由器初始化代码和检查用户登录数据之间的竞争条件。其他反应变量对我来说在waitOn上工作得很好。我遇到过这样的情况。ready()返回true而不订阅数据。检查控制台后,数据不存在。iron:路由器有太多神奇的问题。