刷新Angular2 Meteor后未定义的Meteor.user()

时间:2017-03-30 11:08:32

标签: javascript node.js angular meteor meteor-accounts

我对Angular2和Meteor很新。 我想做一件非常简单的事情:使用Meteor.user()从Meteor获取当前用户信息。 问题是,每当我刷新页面时,Meteor.user()的配置文件值变为"未定义"。

我做了一些搜索,显然Meteor.user()太长了,无法执行。 显然,您可以使用Tracker.autorun()等待Meteor.user()进行初始化。

目前我的代码看起来像这样:

Tracker.autorun(function () {
        Meteor.subscribe("userLoggedIn");
        console.log(Meteor.user());
        if(Meteor.user() !== undefined) {
           //Do something
           this.myFunction();
        }
     });

事情是" myFunction"是"未定义"因为它没有在追踪器中定义(至少我认为)。

你知道我怎么称呼我的功能? 可以在跟踪器中执行那么多代码吗? 是否可以在Tracker之外等待Meteor.user()的初始化?

(是的,我有很多疑问:p)

提前谢谢! :)

1 个答案:

答案 0 :(得分:0)

如果您依赖this,为什么不使用箭头功能来保持上下文?

Tracker.autorun(() => { this.myFunction(); });

您还可以设置范围变量,旧学校方式:

var self = this;

Tracker.autorun(function () { /* bla bla */ self.myFunction(); });