私はこのモデルのhtml /テンプレートを送信しています:GO HTML /テンプレート:2つのドット変数のテスト平等
: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はstruct * models.NetworkMetaのフィールドではありません」というエラーが返されます。
私はhtml/template eq演算子を理解していますので、比較はある値を別の値(または値のグループ)、つまり残りの部分と空白で区切ってテストします。ただし、この場合、エラーは、フィールドの場合、コンパイラはスペースを無視することを示しているようです。
この平等作業を行う方法はありますか?カスタム関数を書く必要がありますか?
ありがとうございました。
両方のフィールドが同じ構造体にある必要があります(親からのスライスを反復処理している場合でもそうです)。私の知る限り、これを行う方法は他にありません。 –