猿问

在 go html 模板中创建循环的最佳方法是什么?

我正在尝试创建一个 html 模板,用于通过html/templateGo 包显示帖子。我还想在我的页面上进行分页,每页显示 5 个帖子。


因此,我从我的帖子存储库中获取帖子计数,将其除以每页帖子的值并将其四舍五入(ceil)。这是当前可用帖子的总页数。


我将总页数传递给我的 html 模板。现在,在我的 html 模板中,我需要显示从 1 到总数的页面按钮。


在text/html包中有一个关于如何使用管道的很棒的文档,但我没有找到任何创建简单循环的例子。


我得到了解决方案,但我不确定它是否是好的解决方案。我不仅可以将总页数传递给模板,还可以将一组可用页面传递给模板,因此在我的模板中,我可以执行以下操作:


{{range .pages}}

    <div class="page"><a href="/posts/{{.}}">{{.}}</a></div>

{{end}}

但也许有比传递页面数组更好的方法来做到这一点?我也知道将自定义函数传递给模板的可能性。它可能是一个解决方案吗?


喵喵时光机
浏览 206回答 2
2回答

蓝山帝景

规则是模板必须包含尽可能少的逻辑(这就是本机功能和控件如此受限于模板包的原因)。您应该通过将数据放入专用结构(将传递给模板)来将数据准备到控制器中。然后,您可以按照预期使用 range 函数将这个结构(由变量和数组组成)显示到模板中。
随时随地看视频慕课网APP

相关分类

Go
我要回答