Я пытаюсь создать html-шаблон для отображения сообщений через html/template
Go package. Я также хочу сделать разбивку на страницы на моей странице, чтобы отобразить 5 сообщений на странице.Каков наилучший способ создания цикла в шаблоне go html?
Итак, я беру счетчик сообщений из своего почтового хранилища, деля его по столбцам на значение страницы и округляя его (ceil). Это общее количество страниц с имеющимися в настоящее время сообщениями.
Передаю общее количество страниц в мой шаблон html. Теперь, в моем шаблоне html мне нужно отобразить кнопки страницы от 1 до общего числа.
В пакете text/html
есть замечательная документация о том, как работать с конвейерами, но я не нашел примера создания простого цикла.
У меня есть решение, но я не уверен, что он хороший. я могу передать в шаблон не только общее количество страниц, но массив доступных страниц, так что в моем шаблоне, я могу сделать что-то вроде:
{{range .pages}}
<div class="page"><a href="/posts/{{.}}">{{.}}</a></div>
{{end}}
Но, может быть, есть лучший способ сделать это, чем передача массив страниц? Я также знаю о возможности передачи пользовательских функций в шаблон. Это может быть решение?
Я не знаю много о 'template'; у кого-то может быть лучший ответ. Но диапазон выглядит разумным для меня. – twotwotwo
Это не огромная экономия, возможно, не стоит того, но вы можете подделывать итерирование чисел в шаблоне без создания массива фактических ints с помощью пустой struct: '" pages ": make ([] struct {}, 16) 'при определении вашего контекста и' {{range $ pageNum, $ _: = .pages}} 'в шаблоне: http://play.golang.org/p/jvFp1TptMV. Трюк пустой-структуры - от https://github.com/bradfitz/iter/blob/master/iter.go – twotwotwo