我有一些嵌套结构传递给go html模板。我想检查一个切片是否为空,如果为空则打印“无数据”。
我正在使用以下模板代码执行此操作,但是我从不打印空内容,它只是完成了呈现任何html的代码。我将文本放在值周围,以查看其输出的文本是否为空,但不呈现文本。我以为下面的$ s可能需要其他测试,例如$ s not nil或$ s not“”。我已经尝试过了,但是得到了相同的结果。我注意到,如果在范围之前打印{{$dr.Swells}}
,则会得到[]。任何帮助或指示,将不胜感激。
{{ range $d := .DailyHtmlData}}
<div class="row"><small><br></br></small></div>
{{range $dr := $d.Forecast}}
<div class="row">
<div class="col col-2 text-left nopadding"><small>{{$dr.Day}}/{{$dr.Month}} {{$dr.Hour}}:00</small></div>
{{range $s := $dr.Swells}}
{{if $s }}
<div class="row"><small>
<div class="col col-auto text-left nopadding">{{$s.Dir}} {{$s.Height}}ft@{{$s.Period}}Sec |</div>
</small></div>
{{else}}
<div class="row"><small>
<div>No Data.</div>
</small></div>
{{end}}
{{end}}
<div class="col text-right nopadding"><small>Wind:{{$dr.Winddir}}:{{$dr.Windspd}}mph Gusts:{{$dr.Windgus}}</small></div>
</div>
{{end}}
{{end}}
答案 0 :(得分:1)
当切片为空或为零时,使用{{range pipeline}} T1 {{else}} T0 {{end}}
表单打印内容。
{{range $s := $dr.Swells}}
<div class="row"><small>
<div class="col col-auto text-left nopadding">{{$s.Dir}} {{$s.Height}}ft@{{$s.Period}}Sec |</div>
</small></div>
{{else}}
<div class="row"><small>
<div>No Data.</div>
</small></div>
{{end}}