努力等待订阅和多个订阅

Pio*_*ski 1 meteor iron-router

我真的在与铁路由器waitOn挣扎.

我有很多订阅,我想等待,在我看来铁路由器正在等待任何事情.

我已经设置了许多订阅(main.js),我想在应用程序启动之前加载它:

Meteor.subscribe("appointments");
Meteor.subscribe("business");
Meteor.subscribe("clients");
Meteor.subscribe("staff"); 
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几乎所有可能的配置,但我似乎无法让"加载器"显示自己并等待所有订阅准备就绪.我在layoutTemplate('layout')中有一个辅助函数来从数据库中获取一个值但是findOne()返回undefined/null我认为这是因为路由器没有等待订阅...

我的路由器配置.我想了解我如何链接依赖项或创建依赖项等待.

Router.configure({
    layoutTemplate: 'layout',

    loadingTemplate: 'loading',
    waitOn: function () {
        console.log('Iron router start');
        this.subscribe('clients').wait();
        this.subscribe('staff').wait();
        this.subscribe('appointments').wait();
        this.subscribe('business').wait();
        this.subscribe('calendar').wait();


    },
    action: function() {
        if (this.ready()) {
            this.render('dashboard');
        } else {
            this.render('loading');
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

ano*_*oop 9

尝试更改这样的waitOn部分.此外,我认为您可以从main.js文件中删除订阅,并在该waitOn特定路由的路由器功能中编写所需/相关订阅.

Router.configure({
    layoutTemplate: 'layout',
    loadingTemplate: 'loading',
    waitOn: function () {
        console.log('Iron router start');
        return [        
            Meteor.subscribe('clients'),
            Meteor.subscribe('staff'),
            Meteor.subscribe('appointments'),
            Meteor.subscribe('business'),
            Meteor.subscribe('calendar')
        ]

    },
    action: function() {
        if (this.ready()) {
            this.render('dashboard');
        } else {
            this.render('loading');
        }
    }
});
Run Code Online (Sandbox Code Playgroud)