2016-04-14 15 views
1

Ben bir html/şablonu bu modeli yolluyorum test eşitliği:GİT html/şablonu: İki nokta değişkenleri

type MapModel struct { 
Networks  []*NetworkMeta 
WaveKey  string 

}

Ağlar alan başka türe göre tanımlanır, NetworkMeta:

type NetworkMeta struct { 
NetworkMetaKey string 

}

bir hTML seçme nesneyi üretmek için Ağlar dizi kullanın:

Burada her şey "eq" eşitlik testi dışında çalışır. Bu test şu hatayı döndürür: "WaveKey bir struct type * models.NetworkMeta alanı değildir."

html/template eq işlecini anladığım gibi, karşılaştırma, bir değer diğerine (veya değer grubunun), diğeri boşlukla ayrılmış olana karşı bir değeri sınar. Ancak bu durumda, hata bir alan için derleyicinin alanı yoksayar.

Bu eşitliği sağlamak için herhangi bir yol var mı? Özel bir func yazmam gerekiyor mu?

Yardımlarınız için teşekkür ederiz.

+0

Her iki alan da aynı yapıda olmalıdır (evet, üst öğeden gelen bir dilim üzerinde yineleme yapıyor olsanız bile). Bilgime göre bunu yapmanın başka yolu yok. –

cevap

1

dot Networks dilimi boyunca yineleniyor, bu nedenle bu tür * NetworkMeta'dır. NetworkMeta'nın herhangi bir WaveKey alanı yoktur.

Özel kapsamlar, farklı kapsamlardaki değerlere erişmeye çalıştığınız için istediğiniz gibi olabilir.

+1

Ah ... bu yardımcı oluyor. Gerçekten de, hızlı bir arama, dolar işaretinin "önceki" noktaya geri döndüğü fikrini ortaya çıkardı. Bu, bunun işe yarayacağı şekilde: {{eq .NetworkMetaKey $ .WaveKey}} ... {{end}} – Brent