我想创建自己的模板,我可以将对象传递给它,并让 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}