首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang分页

Golang分页
EN

Stack Overflow用户
提问于 2014-07-19 17:53:17
回答 1查看 2.7K关注 0票数 1

我需要实现分页。实际上我有pages数组,page参数和per_page变量。在我的代码中:

代码语言:javascript
复制
pages_count := math.Floor(float64(len(pages)) / float64(per_page))

然后在模板中,我需要类似于(伪代码)的东西:

代码语言:javascript
复制
{{ if .page - 2 > 0 }}
    {{ $start_page := .page - 2 }}
{{ else }}
    {{ $start_page := 1 }}
{{ end }}

{{ if .page + 2 >= .pages_count }}
    {{ $finish_page := .page + 2 }}
{{ else }}
    {{ $finish_page := .pages_count }}
{{ end }}

<ul>
    {{ for $i := $start_page; $i <= $finish_page; ++$i }}
        <li {{ if $i == .page }} class="current_page" {{ end }}>
            <a href="{{ url "Pages.Show" .$i }}">$i</a>
        </li>
    {{ end }}
</ul>

如何正确实现这一点?Thx

EN

回答 1

Stack Overflow用户

发布于 2014-07-20 16:49:27

当我使用Java模板(例如Velocity)时,我发现您所询问的模板逻辑类型导致了过于复杂的模板。同样的道理也适用于Go。

我的解决方案是将逻辑移动到视图模型层中,并保持模板相当哑巴。这意味着控制器和视图模型必须做更多的工作来预先计算模板显示的值的种类。因此,视图模型会更大--但它只是简单的数据,易于进行单元测试。

在您的特定示例中,您将保留构建<li>列表的for循环。<ul>打开标记以上的所有内容都可以在视图模型中处理。因此,该模板将只处理一些预计算数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24839028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档