我有一个路由和一个模板,它具有routes.js中定义的正确数据上下文:
this.route('entrant_view_race', {
path: '/organise/entrants/:_id/',
yieldTemplates: navOrganise,
waitOn: function() {
return Meteor.subscribe('entrants');
},
data: function() {
return Races.findOne(this.params._id);
}
});
数据上下文设置为上面的数据函数没有问题。在entrant_view_race模板/路线中,我们有另一个模板:
<div class="row">
<div class="col-md-4">
{{> chart_entrant_status}}
</div>
</div>
现在在chart_entrant_status中是一个订阅,它传递一个在数据上下文中定义的参数:
Meteor.subscribe('entrantStatusCount', this._id);
但this._id
未定义。我相信,除非您明确定义诸如{{> chart_entrant_status dataContext}}
之类的内容,否则无论父项的数据上下文是否传递给子模板?如何将父上下文的_id传递给子模板(我不想使用会话变量)。
编辑:
chart_entrant_status
模板如下所示:
<template name="chart_entrant_status">
{{#chart_container title="Entrants" subtitle="Status" class="race-status"}}
{{_id}}
<div id="chart"></div>
{{> table_entrant_status}}
{{/chart_container}}
</template>
注意{{_id}}
被渲染得很好,所以上下文仍然存在。以及呈现模板时的订阅:
Template.chart_entrant_status.rendered = function() {
Meteor.subscribe('entrantStatusCount', this._id); // this._id is undefined - if I substitute for the actual id as a string Ba48j2tkWdP9CtBXL I succeed....
}
但是没有雪茄......努力寻找丢失数据背景的地方......
EDIT2:返回this._id
罚款......
Template.chart_entrant_status.helpers({
stuff: function() {
return this._id; // returns the right id in {{stuff}} in the template
}
})
Template.chart_entrant_status.rendered
无法使用数据上下文吗?
EDIT4:解决了。这是this.data._id ....啊啊啊
答案 0 :(得分:1)
this.data._id
是正确答案