【问题标题】:get Meteor.subscribe in callback在回调中获取 Meteor.subscribe
【发布时间】:2017-05-03 11:23:16
【问题描述】:

我有这个代码,

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

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

【问题讨论】:

    标签: javascript jquery reactjs meteor meteor-react


    【解决方案1】:

    看起来你在混淆事情。如果你想.stop()订阅,你基本上只需要订阅对象。

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

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

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

    如果您想在订阅准备就绪时执行.find(),您应该做的是设置一个状态标志,表明它是,然后有一个函数取决于这个状态标志的值来执行@ collection 对象上的 987654328@,而不是订阅对象。

    self.setState( { getOrgDetailReady: true } );
    

    然后在状态更改时运行的生命周期方法之一(取决于您的代码...)您执行以下操作:

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

    【讨论】:

    • 如果订阅准备就绪,如何设置状态标志来执行功能?
    • 我在答案末尾放了一个例子。
    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 2015-07-31
    • 2011-03-12
    • 2019-07-18
    • 2018-09-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多