我在Router.Config
上设置了一个带有loding模板的路由Router.onBeforeAction('loading');
this.route('clients', {
path: '/clients',
template: 'clientsAll',
waitOn: function () {
return Meteor.subscribe('clientsAll');
},
data: function () {
if (this.ready()) {
console.log("Data");
return Clients.find().fetch();
}
}
});
一切正常,它在渲染模板之前显示加载模板,但在日志中显示数据被触发两次。
答案 0 :(得分:3)
这是一种正常行为,data
就像大多数路径方法在反应计算中运行一样。
在data
方法中,您依赖于this.ready()
恰好是被动数据源(它返回waitOn
返回的等待列表的状态)。
所以基本上就是这样:
this.ready()
运行,返回false。this.ready()
现在返回true并重新运行data
方法。这不是问题,因为data
方法通常不会计算量大(它们只返回客户端本地可用的一些数据)。