我在 Router.Config 上设置了一个带有加载模板的路由器
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();
}
}
});
一切正常,它在渲染模板之前显示加载模板,但在日志上它显示数据被触发两次。
这是正常行为,data
与大多数路由方法一样,它是在反应式计算中运行的。
In your data
你所依赖的方法this.ready()
它恰好是一个反应式数据源(它返回由waitOn
).
所以基本上这就是发生的事情:
- 您的数据方法被声明为计算并最初运行
this.ready()
返回假。
- 您等待的订阅将在未来某个时间准备好,因此
this.ready()
现在返回 true 并且你的data
方法重新运行。
这不是问题,因为data
方法通常计算量不大(它们只是返回客户端本地可用的一些数据)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)