流星数据上下文到子模板

时间:2014-11-03 17:24:21

标签: meteor

我有一个路由和一个模板,它具有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 ....啊啊啊

1 个答案:

答案 0 :(得分:1)

this.data._id是正确答案