在回调中获得 Meteor.subscribe

get Meteor.subscribe in callback

我有这个代码,

Meteor.subscribe('getOrgDetail', {status:'active'},function(){
        var sub = this;
        self.setState({'subscriptions.orgs':sub{id:Organizations.find().fetch()});
    });

我正在使用它来获取回调中的 Meteor.subscribe。但它不起作用。还有其他方法可以设置订阅状态吗?

看来你把事情搞糊涂了。如果您想 .stop() 订阅,您基本上只需要订阅对象。

.subscribe() 的最后一个参数是函数时,它被解释为 onReady() 回调。

回调的this上下文不会是订阅对象。与 Javascript 中一样,它将是调用函数的拥有上下文。在 Meteor 订阅 onReady 回调的情况下,这没有定义。

所以在回调中你不能依赖 this,只能依赖你在范围或闭包中的变量(比如你的 self)。

如果您想在订阅准备就绪时执行 .find(),您应该做的是设置一个状态标志来表明它已就绪,然后拥有一个依赖于该状态标志值的函数在 集合 对象而不是订阅对象上执行 .find()

self.setState( { getOrgDetailReady: true } );

然后在生命周期方法之一 运行 当状态改变时(哪一个取决于你的代码......)你做:

if( this.state.getOrgDetailReady ) {
    let orgDetails = orgDetailCollection.find().fetch();
    ...
}