0

html/templateGo パッケージ経由で投稿を表示するための html テンプレートを作成しようとしています。また、ページごとに 5 つの投稿を表示するために、自分のページにページネーションを作成したいと考えています。

そこで、投稿リポジトリから投稿数を取得し、それをページあたりの投稿数の値で割り、丸めます (ceil)。これは、現在利用可能な投稿のあるページの総数です。

ページの総数を html テンプレートに渡します。さて、私のhtmlテンプレートでは、ページボタンを1から合計数まで表示する必要があります。

パッケージには、パイプラインの操作方法に関するすばらしいドキュメントがありtext/htmlますが、単純なループを作成する例は見つかりませんでした。

私は解決策を得ましたが、それが良いものかどうかはわかりません。総ページ数だけでなく、利用可能なページの配列をテンプレートに渡すことができるので、私のテンプレートでは次のようなことができます:

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

しかし、ページの配列を渡すよりも良い方法があるのではないでしょうか? カスタム関数をテンプレートに渡す可能性についても知っています。それは解決策になるでしょうか?

4

2 に答える 2

1

原則として、テンプレートには可能な限り最小限のロジックを含める必要があります (これが、ネイティブ関数とコントロールがテンプレート パッケージに限定されている理由です)。

データを専用の構造体 (テンプレートに渡す) に入れて、データをコントローラーに準備する必要があります。次に、意図したとおりに範囲関数を使用して、この構造体 (変数と配列で構成される) をテンプレートに表示できます。

于 2014-09-26T12:39:55.550 に答える