Handlebars js - 无法从loop / partial访问父对象属性

时间:2015-02-24 11:48:19

标签: javascript handlebars.js

我有以下数据对象:

enter image description here

有了这个,我使用以下循环没有问题

Templates.Links = [
"<ul>",
"{{#each data}}",
    "<li>",
    "<div class='flex-item-button'>",
        "<div class='info noicon'>",
            "<span class='name'>{{{URL}}}</span>",
            "<span class='meta'>{{URL}}</span>",                                
        "</div>",
        "<div>",                
        "<span class='expand expand-item-details'><i class='fa fa-sort-down'></i></span>",
        "</div>",
        "<div class='additional-info'>",

        "</div>",
    "</div>",       
    "</li>",
"{{/each}}",
"</ul>",    
].join("\n");

这没有任何问题,并且每个数据循环都可以访问我的数据属性。我想能够做的是从我的循环中访问title / caml字段。我试过以下没有运气。

{{./title}}
{{../title}}

理想情况下,我希望在每个循环中使用partial,然后从部分访问父节点中使用,但这似乎也不起作用。

1 个答案:

答案 0 :(得分:3)

以下是解决方案:

{{#each data}}
  ....
  {{#with ../this}}
    {{> yourPartial}}
  {{/with}}
  ....
{{/each}}

而在你的部分内容中,只需:

{{title}}

修改 您应该实现自己的帮助程序,如:

Handlebars.registerHelper("withCurrentItem", function(context, options){
    var contextWithCurrentItem = context;
    contextWithCurrentItem.currentItem = options.hash.currentItem;
    return options.fn(contextWithCurrentItem);
});

并使用它:

{{#withCurrentItem ../this currentItem=this}}
  {{> yourPartial}}
{{/withCurrentItem}}