使用Meteor Iron路由器时传递上下文以使其屈服

使用Meteor Iron路由器时传递上下文以使其屈服,meteor,iron-router,Meteor,Iron Router,我开始在我的Meteor应用程序中使用它的生成模板。 我最近遇到了一个问题,无法使用上下文启动命名的yield,如下所示: {{#with context}} {{yield 'subtemplate'}} {{/with}} 并获取此错误很抱歉,找不到名为“subtemplate”的成品。您是否在如下呈现的模板中定义了它:{{yield“subtemplate”}? 如果我删除{{{#with}}块表达式,我就能够呈现成品 有人知道将上下文传递给命名收益的好方法吗 我已将我的问题发布

我开始在我的Meteor应用程序中使用它的
生成
模板。
我最近遇到了一个问题,无法使用上下文启动命名的yield,如下所示:

{{#with context}}
    {{yield 'subtemplate'}}
{{/with}}
并获取此错误
很抱歉,找不到名为“subtemplate”的成品。您是否在如下呈现的模板中定义了它:{{yield“subtemplate”}?

如果我删除
{{{#with}}
块表达式,我就能够呈现成品

有人知道将上下文传递给命名收益的好方法吗

我已将我的问题发布在
iron router
github项目上,但尚未得到任何解决方案

非常感谢您的帮助

编辑2014年1月1日: 因此,我的代码如下所示:

// main template for the route
 <div class="form-container">
    <div class="form">
        {{yield 'section'}}
    </div>
</div>
节模板之一的示例:

<template name="education">
    {{#with app}}
    <form id="education" name="education" class="fragment" method="post" action="">
    <h2>Education</h2>
        <div class="form-group">
            <label for="college" class="control-label">College/ University</label>
            <select class="form-control" id="college" name="college" placeholder="Select a College/ University">
                <option value="">Select a College/ University</option>
            {{#each colleges}}
                <option value="{{slug}}" {{selected slug ../college}}>{{name}}</option>
            {{/each}}
            </select>
        </div>
        <!-- other content here -->
    </form>
    {{/with}}
</template>

{{{带app}}
教育类
学院/大学
选择一所学院/大学
{{{各学院}
{{name}}
{{/每个}}
{{/与}}

使用
{{{with app}}
块是我目前解决这个问题的方法,但是因为我有10个不同的节模板,所以我必须将它们全部放进去。

使用ironrouter在路由器中传递数据上下文。不能以这种方式传递,因为如果在路由器中传递路由,它将覆盖路由的数据上下文

但是,它可能与ironRouter的shark分支一起工作,该分支基于Meteor UI,因为它使用
{{>yield}
而不是
{{yield}

不过,您可以使用以下方法:

路由特定数据上下文 基本上,您可以使用
data
param传递上下文。这样做可能比使用
{{{with context}}
更容易,因为您可以使用更多的动态数据,每个路由都不同

您可能已经尝试过了,我有点不确定它是否会转到命名的yield的模板

为模板使用普通模板辅助程序 然后,您可以在命名的产品中使用类似于
{{helper.name}}
的内容

带有把手辅助对象的全局数据上下文 如果要为所有管线使用数据,可以使用把手全局辅助对象。i、 e

Handlebars.registerHelper('todaysDate', function() {
    return (new Date).toString();
});

然后在任何模板中使用
{{todaysDate}}
。您可以使用数据而不是日期。

我完全可以为模板定义数据上下文,但我想在这里实现的是为命名的产量定义数据上下文,可以是几个不同的子模板。您可以将子模板放在一个较大的模板中,该模板具有产量?这不一样吗?你可以发布你正在使用的代码吗?谢谢你的回复。很抱歉更新太晚。我把我正在使用的代码放在上面的问题中。
Router.map(function() {
    this.route('template', data: function() { return Something.find() });
});
Template.templateInYieldName.helper = function() {
    return Something.find();
}
Handlebars.registerHelper('todaysDate', function() {
    return (new Date).toString();
});