【问题标题】:Handlebars js - cannot access parent object properties from loop / partialHandlebars js - 无法从循环/部分访问父对象属性
【发布时间】:2015-02-24 11:48:19
【问题描述】:

我有以下数据对象:

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

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");

这没有问题,并且使用每个数据循环我可以访问我的数据属性。然而,我想要做的是从我的循环中访问标题/caml 字段。我试过以下没有运气。

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

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

【问题讨论】:

    标签: javascript handlebars.js


    【解决方案1】:

    解决办法如下:

    {{#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}}
    

    【讨论】:

    • 我现在是不是也要传入数据对象??所以我可以访问父元素和子项?
    • 在我描述的情况下,您的部分将使用父对象{data: [], title: '..', caml: '' ....} 访问或者您需要一些更具体的逻辑?我是,请描述一下。
    • 基本上从我的部分中我需要访问数据循环中的当前项目(每个块)和父对象属性 basetemplate / title 等。
    猜你喜欢
    • 2012-08-31
    • 2020-05-04
    • 2011-12-09
    • 2020-01-31
    • 2013-10-29
    • 1970-01-01
    • 2020-09-27
    • 2021-11-06
    相关资源
    最近更新 更多