Go Проверка переменной шаблона не ведет себя так, как я ожидал - PullRequest
0 голосов
/ 31 октября 2019

У меня есть несколько вложенных структур, переданных моему шаблону 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}}

1 Ответ

1 голос
/ 31 октября 2019

Используйте форму {{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}}
...