2010-11-08 14 views
12

Nesne oluşturabileceğim kendi şablonumu oluşturmak istiyorum ve Soya şablonunun nesne boyunca yinelemesini sağlayın ve anahtarları ve değerleri dışarı çekin.Google kapatma şablonlarını kullanırken Soya dosyalarındaki bir nesne üzerinde nasıl yineliyorum?

Ben ve nesne JavaScript ve Soya şablonu çağırırsanız:

var obj = {'one':'a', 'two':b, 'three':c}; 
nameSpace.templateName({'paramValue': obj}); 

nasıl ['one', 'two', 'three'] değerleri alabilirim? Genellikle jQuery'nin each() işlevini kullanırdım, ancak nesneyi bir diziye dönüştürmeden Soy dosyalarında benzer bir işlemin nasıl yapıldığını bilmiyorum.

Kullanmakta olduğum nesneler bilinen bir şekildedir (iç içe geçmiş nesneler yoktur veya varsa bunlar önceden bilinir ve bilinen derinliğe gider). Bunun ya da iç içe nesneler ile genel nesne durumunda cevaplar açıktır.

{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} 

cevap

20

Artık bunları keys() işleviyle alabilirsiniz.

{foreach $key in keys($paramValue)} 
    key: {$key} 
    value: {$paramValue[$key]} 
{/foreach} 
+1

Bu, bugün itibariyle kesinlikle doğru yanıttır. Lütfen belgelere bakın: https://developers.google.com/closure/templates/docs/functions_and_directives –

+1

tuşları() orijinal anahtar sırasına uymaz (dokümantasyonda belirtilmiştir). Semantik olarak bu bir sorun değil, pratikte bunun farkında olmanız gerekebilir. –

İlgili konular