我面临一个奇怪的问题。 我使用Iron Router控制器将数据传递给模板:
Router.route('/wards/add/:_id?', {name: 'wards.add', controller: 'WardAddController'});
WardAddController = RouteController.extend({
action: function() {
this.render('addWard', {
data: function(){
return { hospitals : Hospitals.find({}), hospital_id : this.params._id }
}
});
}
});
我返回一个变量' hospital',它应该包含所有的收集数据。 模板:
<div class="jumbotron">
{{#each hospitals}}
{{name}}<br>
{{/each}}
</div>
在第一页加载时,如果我直接输入页面的网址,则没有项目。 如果我在浏览器控制台中输入Hospitals.find({})。fetch()(不安全是活动的),它将返回一个空对象。
但是,如果我更改页面,在网站上浏览一段时间,并返回列表页面,则会显示项目。
有什么想法吗?
答案 0 :(得分:1)
在服务器文件夹中,添加publish.js并在其中添加:
Meteor.publish('hospitals', function() {
return Hospitals.find({});
});
然后尝试从您的控制器订阅医院:
WardAddController = RouteController.extend({
action: function() {
this.render('addWard', {
waitOn: function() {
return [
Meteor.subscribe('hospitals')
];
},
data: function(){
return { hospitals : Hospitals.find({}), hospital_id : this.params._id }
}
});
}
});