我有一个带有渲染函数的模板,如下所示:
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数据之前调用渲染函数?
答案 0 :(得分:1)
您可以在routecontroller中使用onData
。如果您使用data
参数:
data: function() {
bar: BarFoo.findOne({....})
}
onData: function() {
if(BarFoo.findOne({....})) {
$('[start-date]').datepicker({ ... });
}
}
每次onData
的返回值更改时都会运行 data
,因此您可以先检查是否存在值,如果您的订阅发生更改,也可以被动态更改。
另一个选项是添加加载模板,该模板在订阅完成时显示:
loadingTemplate : 'template'