重复使用 Handlebars 查找

Mar*_*rch 4 javascript template-engine handlebars.js

给定一组对象,我想使用嵌套对象的一个​​属性来查找 Handlebars 中关联对象中的各种属性。

在这个例子中,我想显示每所大学的学生列表,以及每个学生所属部门的信息。

我的代码有效,但嵌套查找非常重复:

{{lookup (lookup ../majors major) 'dean'}}
{{lookup (lookup ../majors major) 'location'}}
Run Code Online (Sandbox Code Playgroud)

我能做些什么吗?我想访问查找的上下文,如下所示:

{{#lookup ../majors major}}
    {{dean}}
    {{location}}
{{/lookup}}
Run Code Online (Sandbox Code Playgroud)

{{lookup (lookup ../majors major) 'dean'}}
{{lookup (lookup ../majors major) 'location'}}
Run Code Online (Sandbox Code Playgroud)
{{#lookup ../majors major}}
    {{dean}}
    {{location}}
{{/lookup}}
Run Code Online (Sandbox Code Playgroud)

Mar*_*rch 6

这是我的解决方案:使用{{#with}}helper并将查找子表达式的结果传递给它 - 一个对象。我不确定这是否是最好的方法,或者真的为什么这样做有效,所以希望得到评论。

{{#with (lookup ../majors major)}}
    <dt>Department dean</dt>
    <dd>{{dean}}</dd>
    <dt>Department location</dt>
    <dd>{{location}}</dd>
{{/with}}
Run Code Online (Sandbox Code Playgroud)

完整示例:

{{#with (lookup ../majors major)}}
    <dt>Department dean</dt>
    <dd>{{dean}}</dd>
    <dt>Department location</dt>
    <dd>{{location}}</dd>
{{/with}}
Run Code Online (Sandbox Code Playgroud)
var source = $("#hb-template").html();
var template = Handlebars.compile(source);
var html = template(context);
$("#hb-html").html(html);
Run Code Online (Sandbox Code Playgroud)