javascript - 在回调中获取 Meteor.subscribe

标签 javascript jquery reactjs meteor meteor-react

我有这个代码,

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(),您应该做的是设置一个状态标志,表明它已经准备就绪,然后有一个取决于该值的函数此状态标志在 collection 对象(而非订阅对象)上执行 .find()

self.setState( { getOrgDetailReady: true } );

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

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

关于javascript - 在回调中获取 Meteor.subscribe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205135/

相关文章:

javascript - 为什么在 Canvas 上填充矩形会缓慢降低性能?

XUL + javascript 模块 : TypeError: xxx. yyyy 不是函数

javascript - 给 HTML 时间来呈现其文本

javascript - 将 JQuery 的美元别名与 selenium 一起使用

javascript - 如何动态更改玩家ID和 key ?

javascript - 如何将类添加到当前单击的路径?

javascript - 如何在 onclick 函数之外声明按钮被单击

javascript - 向 Material 表组件中的查找属性动态添加信息

reactjs - 如何管理接受 yield select 参数的选择器?

javascript - 根据reactjs中的参数更改状态