2012-10-03 17 views
5

Gidonlarda geçerli yineleme nesnesini almanın bir yolu var mı?
kodu: Ben yanlış processObject({{.}}) söz ettik
Gidonlarda geçerli yineleme nesnesine nasıl başvurulur?

<script id="HandleBarTemplate1" type="text/x-handlebars-template"> 
{{#each objArr}} 
<img src="{{objField1}}"/> 
<strong>Name:</strong> {{objField2}} 
<input type="button" onclick="processObject({{.}});"/> 
{{/each}} 
</script> 

. Bir yedeğe ihtiyacım var. Çözüm söylemek istediğim şeyi alırsın.

var objArr = [{objField1:"smith.jpg",objField2:"Smith"},{objField1:"jane.jpg",objField2:"Jane"},...] 

Şablon derleme kodudur gibi objArr ait
içeriği görünebilir:

var source = document.getElementById("HandleBarTemplate1").innerHTML; 
var compiledTemplate = Handlebars.compile(source); 
var html = compiledTemplate({objArr:objArr}); 

Ben Nesne referansı alabilir, o zaman verileri işlemek için çok kolay. Bir nesneyi işleve aktarmak ve gerekli nesneyi almak için dizinin tamamını aramak ve işlemek yerine.
Özel bir blok yardımcısı/özel ifade yardımcısı olmadan bir çözüm tercih et ama hiçbiri varsa, özel bir blok yardımcısı için gitmeyi tercih ederim. Tüm dizi boyunca arama yapmadan herhangi bir çözüm bekliyoruz!

+0

tamamen buna katılıyorum - bir "datacontext" çeşit çok yararlı olurdu –

cevap

0

Farklı bir rota önerebilirim. Önceden bir nesneye başvurduğunuzu bilmek için, ona işaret eden bir global veya isim-aralıklı değişken yapın. Örneğin: window.objArr = objArr; (Anahtar) fonksiyon processObject { }

çağrıyı senin şablonu içinde Anahtarınla:

sizin istediğiniz gelmez ne olursa olsun tıklama işleyicisi oluşturma

< script id="HandleBarTemplate1" type="text/x-handlebars-template"> 

    {{#each objArr}} 

     <img src="{{objField1}}"/> 

     <strong>Name:</strong> {{objField2}} 

     <input type="button" onclick="processObject({{objField2}});"/> 

    {{/each}} 

</script> 

Diğer alternatifler: Müşteri Handler.

Diğer alternatifler: objArray öğesine bir başvuru oluşturamazsanız, html5 kullanıyorsanız, nesnenin özelliklerini veri özellikleri içinde saklayabilirsiniz. processObject daha sonra bunları alabilir.

İlgili konular