说我有这条路线:
Router.route('/order', {
template: 'order',
name: 'order',
layoutTemplate: 'layout',
waitOn: function(){
return Meteor.subscribe('orders');
},
data: function(){
return Orders.findOne()._id;
}
});
在服务器文件夹中:
Meteor.publish('orders', function(){
return Orders.find();
});
在页面加载时,我得到cannot read property '_id' of undefined
,指向Orders.findOne()._id
但我打开Chrome控制台并执行Orders.findOne()._id
并立即弹出ID。
出于某种原因,在data
中的订阅准备好之前似乎正在运行waitOn
?我使用的是最新的Iron Router。
答案 0 :(得分:1)
好的,这是我必须做的就是删除错误并使我的路由正常运行:
data
我不得不将data
放在root_user_appversion 10.1.3.20
函数内部,这非常奇怪,因为我以前认为我以前不需要这样做,并且我没有看到有人提到必须在铁路由器中执行此操作?
无论如何,人们都说Iron Router的10.1.3.20
功能可能会出错并且不断重新运行路由器代码,因为Iron Router认为路由器中应该存在反应性。我不知道这是怎么回事。
答案 1 :(得分:0)
我相信模板呈现时会运行data
,而action
会控制它。尝试添加:
Router.route('/order', {
template: 'order',
name: 'order',
layoutTemplate: 'layout',
waitOn: function(){
return Meteor.subscribe('orders');
},
data: function() {
return Orders.findOne()._id;
},
action: function() {
if(this.ready()) {
this.render();
}
}
});