GO html/template: 测试两个点变量是否相等
GO html/template: test equality of two dot variables
我要发送 html/template 这个型号:
type MapModel struct {
Networks []*NetworkMeta
WaveKey string
}
Networks 字段由另一种类型 NetworkMeta 定义:
type NetworkMeta struct {
NetworkMetaKey string
}
我使用 Networks 数组生成一个 html select 对象:
<select name="waveKey" id="waveKey">
{{range .Networks}}
<option value="{{ .NetworkMetaKey}}" {{if eq .NetworkMetaKey .WaveKey }} selected="selected" {{end}}>
{{ .NetworkMetaKey }}
</option>
{{end}}
除了 "if eq" 等式测试外,这里的一切都有效。该测试 returns 错误:"WaveKey is not a field of struct type *models.NetworkMeta."
据我了解 html/template eq 运算符,比较测试一个值与另一个值(或一组值),一个值与其余值由 space 分隔。然而,在这种情况下,错误似乎表明对于一个字段,编译器忽略了 space。
有什么办法可以使这种平等发挥作用吗?我需要编写自定义函数吗?
感谢您的帮助。
dot 遍历 Networks 切片,因此它是 *NetworkMeta 类型。 NetworkMeta 没有 WaveKey 的任何字段。
自定义函数可能是您想要的,因为您正在尝试从不同的范围访问值。
我要发送 html/template 这个型号:
type MapModel struct {
Networks []*NetworkMeta
WaveKey string
}
Networks 字段由另一种类型 NetworkMeta 定义:
type NetworkMeta struct {
NetworkMetaKey string
}
我使用 Networks 数组生成一个 html select 对象:
<select name="waveKey" id="waveKey">
{{range .Networks}}
<option value="{{ .NetworkMetaKey}}" {{if eq .NetworkMetaKey .WaveKey }} selected="selected" {{end}}>
{{ .NetworkMetaKey }}
</option>
{{end}}
除了 "if eq" 等式测试外,这里的一切都有效。该测试 returns 错误:"WaveKey is not a field of struct type *models.NetworkMeta."
据我了解 html/template eq 运算符,比较测试一个值与另一个值(或一组值),一个值与其余值由 space 分隔。然而,在这种情况下,错误似乎表明对于一个字段,编译器忽略了 space。
有什么办法可以使这种平等发挥作用吗?我需要编写自定义函数吗?
感谢您的帮助。
dot 遍历 Networks 切片,因此它是 *NetworkMeta 类型。 NetworkMeta 没有 WaveKey 的任何字段。
自定义函数可能是您想要的,因为您正在尝试从不同的范围访问值。