GO html/模板:测试两个点变量的相等性
我正在发送此模型的html/模板:GO html/模板:测试两个点变量的相等性,go,go-html-template,Go,Go Html Template,我正在发送此模型的html/模板: type MapModel struct { Networks []*NetworkMeta WaveKey string } Networks字段由另一种类型NetworkMeta定义: type NetworkMeta struct { NetworkMetaKey string } 我使用Networks数组生成一个html选择对象: <select name="waveKey" id="waveK
type MapModel struct {
Networks []*NetworkMeta
WaveKey string
}
Networks字段由另一种类型NetworkMeta定义:
type NetworkMeta struct {
NetworkMetaKey string
}
我使用Networks数组生成一个html选择对象:
<select name="waveKey" id="waveKey">
{{range .Networks}}
<option value="{{ .NetworkMetaKey}}" {{if eq .NetworkMetaKey .WaveKey }} selected="selected" {{end}}>
{{ .NetworkMetaKey }}
</option>
{{end}}
{{range.Networks}}
{{.NetworkMetaKey}
{{end}
除了“if-eq”相等性测试,这里的一切都有效。该测试返回错误:“WaveKey不是结构类型*models.NetworkMeta的字段。”
根据我对html/template eq操作符的理解,比较测试一个值与另一个值(或一组值)的比较,该值与其余值之间用空格隔开。然而,在本例中,错误似乎表明对于字段,编译器忽略了空格
有没有办法让这种平等发挥作用?我需要写一个自定义函数吗
感谢您的帮助。dot正在网络切片中迭代,因此它的类型为*NetworkMeta。NetworkMeta没有任何WaveKey字段
自定义func可能是您想要的,因为您试图从不同的作用域访问值。两个字段必须位于同一个结构中(是的,即使您迭代来自父级的切片)。据我所知,没有其他方法可以做到这一点。啊……这很有帮助。事实上,快速搜索发现了这样一种想法,即美元符号回到“上一个”点,这样就可以工作:{{if eq.NetworkMetaKey$.WaveKey}}。。。{{end}