Meteor:在加载文档之前调用的渲染函数

时间:2014-07-05 08:18:19

标签: meteor iron-router

我有一个带有渲染函数的模板,如下所示:

Template.config.rendered = function () {
    var barfoo = BarFoo.findOne({....});

    if (barfoo) {
        $('[start-date]').datepicker({ ... });
    }
}

问题是,在调用BarFoo函数时,集合rendered仍为空。

我使用Iron Router所以我可以等到特定订阅加载了他们的文档:

HomeController = RouteController.extend({
    ...
    waitOn: function () {
        return Meteor.subscribe('barfoo');
    }
});

所以问题是,如何在加载barfoo数据之前调用渲染函数?

1 个答案:

答案 0 :(得分:1)

您可以在routecontroller中使用onData。如果您使用data参数:

data: function() {
    bar: BarFoo.findOne({....})
}
onData: function() {
    if(BarFoo.findOne({....})) {
        $('[start-date]').datepicker({ ... });
    }
}
每次onData的返回值更改时都会运行

data,因此您可以先检查是否存在值,如果您的订阅发生更改,也可以被动态更改。

另一个选项是添加加载模板,该模板在订阅完成时显示:

loadingTemplate : 'template'