我有点像菜鸟,并且在让我的出版物工作时遇到了一些麻烦。在我的数据中,我有许多患者,并希望显示单个患者的数据。这就是我构建我的出版物的方式:
Meteor.publish('patients.single', function (patientId) {
check(patientId, String);
return Patients.find({_id: patientId});
});
这就是我订阅的方式:
Router.route('/patients/:_id', {
layoutTemplate: 'ApplicationLayout',
yieldRegions: {
'single_patient': {to: 'content'}
},
subscriptions: function () {
return Meteor.subscribe('patients.single', this.params._id);
}
});
我也尝试通过实际模板订阅无效:
Template.patient_details.onCreated(function () {
this.subscribe('patients.single', Session.get("currentPatient"));
});
理论上的出版物似乎很容易,但我似乎无法让它们正确。我在这里做错了什么?
答案 0 :(得分:0)
订阅需要一段时间才能将数据从服务器获取到迷你mongo,因此在使用它将为您获取的数据之前,您必须等待订阅准备就绪。
如果您正在使用Iron Router,请尝试使用waitOn而不是subscribe,这将迫使路由器等待订阅准备就绪,并在获取订阅数据时呈现加载模板。
FormClosing
您也可以使用data属性,这样您就可以在模板instance.data中获得数据。
答案 1 :(得分:0)
试试这个:
服务器端Js
Meteor.publish('patients.single', function (patientId) {
check(patientId, String);
return Patients.find({_id: patientId});
});
路由器JS文件
Router.route('/patients/:_id', {
layoutTemplate: 'ApplicationLayout',
yieldRegions: {
'single_patient': {to: 'content'}
},
waitOn: function () {
return Meteor.subscribe('patients.single', this.params._id);
}
});
在客户端JS文件
中Template.patient_details.helpers({
getData : function(){
return Collection.find().getch();
});
不要忘记在模板html文件中调用{{getData}}
。