2016-04-14 76 views
1

我送一個HTML /模板這款機型的測試平等:GO HTML /模板:兩點變量

type MapModel struct { 
Networks  []*NetworkMeta 
WaveKey  string 

}

的網絡域被另一種類型定義,NetworkMeta:

type NetworkMeta struct { 
NetworkMetaKey string 

}

我使用網絡陣列來產生一個HTML選擇對象:

  <select name="waveKey" id="waveKey"> 
    {{range .Networks}} 
      <option value="{{ .NetworkMetaKey}}" {{if eq .NetworkMetaKey .WaveKey }} selected="selected" {{end}}> 
      {{ .NetworkMetaKey }} 
      </option> 
    {{end}} 

這裏的一切工作除了「if eq」相等性測試。該測試返回錯誤:「WaveKey不是結構類型* models.NetworkMeta的字段。」

據我瞭解的HTML /模板eq運算符,比較測試一個值對另一個(或一組值),其中一個與其餘的空間分隔。然而,在這種情況下,錯誤似乎表明,對於一個字段,編譯器忽略空間。

有什麼辦法可以使這種平等的工作?我是否需要編寫自定義函數?

感謝您的任何幫助。

+0

這兩個字段必須在同一個結構中(是的,即使您正在迭代來自父代的切片)。據我所知,沒有其他辦法可以做到這一點。 –

回答

1

點正在迭代網絡片,因此它是* NetworkMeta類型。 NetworkMeta沒有WaveKey的任何字段。

自定義函數可能是你想要的,因爲你試圖訪問不同範圍的值。

+1

啊...這很有幫助。確實,快速搜索發現美元符號回到「前一個」點的想法,這樣就可以工作:{{if eq .NetworkMetaKey $ .WaveKey}} ... {{end}} – Brent