在尘埃js中使用数组的动态变量名称

时间:2014-10-09 09:46:39

标签: javascript dust.js

我的模型看起来像:

var model = { 
    tagTypes : ["product", "location"],
    cards : [{
        title : "Card 1",
        product : ["prod1"],
        location : ["US", "UK"]
    },
    {
        title : "Card 2",
        product : ["prod2"],
        location : ["UK"]
    }]
};

我正在获取字段(这是一个动态列表&它可能会根据响应而改变)为我的"卡" (即产品和这种情况下的位置)作为数组(tagTypes)

我想逐个遍历这些字段的元素。我可以使用当前的灰尘模板以序列化形式获取这些列表。但我想实际遍历每个单独的元素,以便我可以在其间添加一些额外的html。

当前的尘埃模板:

 {#cards}
    {title} | 
    {#tagTypes card=.}
        {card[.]}
    {/tagTypes}
    <br/>
{/cards}

当前输出:

Card 1 | product: [prod1] location: [US,UK] 
Card 2 | product: [prod2] location: [UK] 

所需输出(日):

Card 1 | product: <span class="tag">prod1</span> location: <span class="tag">US<span> <span class="tag">UK</span> 
Card 2 | product: <span class="tag">prod2</span> location: <span class="tag">UK</span> 

请参阅:http://jsfiddle.net/74nw7dm3/5/以尝试上述代码。

1 个答案:

答案 0 :(得分:0)

问题是由于在单个灰尘标签中使用散列和点(灰尘不支持)

为了解决这个问题,我使用了我的模型中提供的标量。创建了一个带参数的部分,该部分引用了我的对象所需的键。这消除了使用点运算符,这使我可以安全地使用哈希。

模型

var model = { 
    tagTypes : ["product", "location"],
    garbage : "foo",
    cards : [{
        title : "Card 1",
        product : ["prod1"],
        location : ["US", "UK"],
    },
    {
        title : "Card 2",
        product : ["prod2"],
        location : ["UK"]
    }]
};

工作模板:

{#cards}
    {title} | 
    {#tagTypes card=.}
       {.}: 
       {#garbage tagType=.}
       {#card[tagType]}
           <span> {.} </span>
       {/card[tagType]}
       {/garbage}
    {/tagTypes}
    <br/>
{/cards}

工作jsfiddle:http://jsfiddle.net/74nw7dm3/7/