我想创建自己的模板,可以将一个对象传递给该模板,并让Soy模板遍历该对象并提取键和值。
如果我在JavaScript中具有和对象并调用Soy模板:
var obj = {'one':'a', 'two':b, 'three':c};
nameSpace.templateName({'paramValue': obj});
如何获得
['one', 'two', 'three']
值?通常我会使用jQuery的each()
函数,但是我不确定如何在Soy文件中执行类似的操作而不将对象转换为数组。我正在使用的对象具有已知的形式(没有嵌套的对象,或者如果有,则提前知道它们并到达已知的深度)。欢迎对此问题或带有嵌套对象的一般对象的答案。
{namespace nameSpace}
/**
* Prints keys and values of the object
* @param paramValue object with keys and values
*/
{template .templateName}
{$paramValue[0]} // undefined
{$paramValue.Keys} // undefined
{$paramValue.keys} // undefined
{$paramValue.one} // prints 'a'
{foreach $val in $paramValue}
// never reached
{/foreach}
{/template}
最佳答案
现在,您可以使用 keys()
函数获取它们。
{foreach $key in keys($paramValue)}
key: {$key}
value: {$paramValue[$key]}
{/foreach}