在回调中获得 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();
...
}
我有这个代码,
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();
...
}