2013-01-24 58 views
2

我正在寻找一种方式来调用我的灰尘模板文件中的动态密钥,像 动态密钥名称中Dust.js

<table> 
{#array1} 
<tr> 
    {#array2} 
    <td>{#array1}{object.#dynAttrName#}{/array1}</td> 
    {/array2} 

{/array1} 
</table> 

我想获得类似“object.attribute1 “其中1是{array1}中当前对象的标识。 (array1 [n] .id)

谢谢你的帮助!

+0

这与另一个[灰尘问题]非常相似(http://stackoverflow.com/questions/14462903/indirection-in-dust-js/14465766#14465766)。可悲的是,答案似乎是,这在尘埃中是不可能的。 – smfoote

+0

谢谢我没有看到这一个。太悲伤,我们不能这样做,我会尽力找到另一种方式 – al3x

+0

我会按照Github回购,因为这个功能可能会到来。 – smfoote

回答

4

它可以通过添加辅助函数的上下文对象来完成:

上下文对象:

{ 
    get: function (chunk, context, bodies, params) { 
     var obj = dust.helpers.tap(params.ofObj, chunk, context); 
     var prop = dust.helpers.tap(params.prop, chunk, context); 
     return chunk.write(obj[prop]); 
    }, 

    a: { 
     b: "bbb" 
    } 
} 

模板

{#get prop="b" ofObj=a/} 

可以在linkedin dust tester试试这个

我相信它也可以定义一个全球防尘助手。

+1

这样一个常见的用例,我不得不做同样的事情。我很惊讶/失望的是,灰尘并没有将它作为内置的帮助程序或内置语法。想象一下,所有期望这种简单/基本js特征的不同人都浪费了所有的时间。 – miir