使用Iron Router,我想根据用户所在的页面访问特定数据。 This教程使用Iron Router的一个函数,名为" data"它根据用户所在的页面提供数据。但是还有另一种使用waitOn和订阅的方法。
这些方法之间究竟有什么区别?
答案 0 :(得分:2)
让我们分析您提到的教程中的简单案例:
客户端:
this.route('authors', {
waitOn: function() {
return Meteor.subscribe('authorList');
},
data: function () {
return { authors: Authors.find() };
}
});
服务器端(我自己添加的部分):
Meteor.publish("authorList", function () {
return Authors.find();
});
假设Authors
集合有3位作者:
[{name:"Allan"},{name:"Brian"},{"name":"Joe"}]
为了使它变得非常简单,我假设服务器端在authorList
发布函数中发布所有作者。
在waitOn
中,您将返回订阅authorList
。这给了我们两个好处:
1)客户端订阅authorList
,因此集合Authors
中的所有3个文档都将通过DDP发送到客户端。
2)IronRouter可以显示loadingTemplate
,直到收到所有数据。
在data
函数中,您可以返回:
整套(3位作者):
Authors.find();
或子集(1或2位作者):
// one author:
Authors.find({name:"Allan"});
订阅数据。
如果没有订阅,则Authors.find()
将不会填充数据。
希望有所帮助。 如果不清楚,我建议阅读:https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/
答案 1 :(得分:0)
'data'设置正在呈现的模板的上下文。 Handlebars允许您从上下文中读取属性,如{{someProperty}}。
'subscribe'从服务器请求客户端的新收集数据。