在嵌套的Handlebar循环中使用索引

时间:2016-08-07 13:47:58

标签: handlebars.js

我正在尝试创建下表。

enter image description here

我已将def verify(data: File): Boolean = { val signedData = new CMSSignedData(new CMSProcessableFile(data), Base64.decode(this.value)) val certStore = signedData.getCertificates.asInstanceOf[Store[X509CertificateHolder]] val signers = signedData.getSignerInfos.getSigners val signer = signers.iterator.next val certs = certStore.getMatches(signer.getSID.asInstanceOf[Selector[X509CertificateHolder]]) val cert = certs.iterator.next signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert)) } 传递给车把(PS。我可以重构这个物体。我应该吗?)。

o

根据http://handlebarsjs.com/builtin_helpers.html,我可以通过var o={ years:[1800,1900,2012], countries:["Africa","America","Asia","Europe","Oceania"], data:[ [107,133,1052], [null,156,954], [635,null,4250], [203,408,740], [2,6,38] ] }; 访问索引。但由于我有两个循环,如何访问它们以便我可以获得正确的数据?

{{@index}}

1 个答案:

答案 0 :(得分:0)

首先,{{#each years}} {{#years}}具有相同的结果。后一种形式来自Mustache,是图书馆称为Section的形式。 Handlebars文档解释了differences between Handlebars block expressions and Mustache Sections

您无法在{{#each data}}循环中使用{{#each countries}}的原因是因为国家/地区循环中的数据上下文是当前的国家/地区迭代。您必须访问父作用域才能访问data对象。这是通过Handlebars paths完成的,并将写为{{../data}}

但是,在我们的场景中,我们希望获取data的特定元素,其索引与当前国家/地区迭代的索引相匹配。为此,我们可以使用lookup helper。结果如下:

<table>
    <thead>
        <tr> 
            <th></th> 
            {{#each years}}
                <th>{{this}}</th> 
            {{/each}} 
        </tr> 
    </thead> 
    <tbody> 
        {{#each countries}} 
            <tr> 
                <td>{{this}}</td> 
                {{#each (lookup ../data @index)}} 
                    <tr> 
                        <td>{{this}}</td> 
                    </tr> 
                {{/each}} 
            </tr> 
        {{/each}} 
    </tbody> 
</table>