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