オブジェクトを渡すことができる独自のテンプレートを作成し、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}