具有异步功能的流星铁路由器waitOn

时间:2014-08-04 00:22:26

标签: javascript meteor iron-router

我需要在async函数准备就绪后在iron-router的waitOn参数中返回我的订阅。

这应该是这样的:

this.route('myRoute', {
    template : 'myTemplate',
    path : '/foo/:param',
    waitOn : function () {
        MyAsyncFunction(function(this.params.param){
            var result = 'whatever';
            return Meteor.subscribe('MyCollection', result);    
        });
    },
    data : function () {
        return MyCollection.find().fetch()
    }
});

使用铁制路由器解决此问题的最佳方法是什么?我正在寻找推荐的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以从MyAsyncFunction挂钩运行onRun并使用它来设置将触发订阅更新的反应变量。

this.route('myRoute', {
    template : 'myTemplate',
    path : '/foo/:param',
    onRun: function () {
        MyAsyncFunction(function(this.params.param){
            Session.set('result', 'whatever');    
        });
    }, 
    waitOn : function () {
        return Meteor.subscribe('MyCollection', Session.get('result'));
    },
    data : function () {
        return MyCollection.find().fetch()
    }
});

当参数更改时,onRun挂钩将重新运行。