1 回答
TA贡献1871条经验 获得超8个赞
该{{range}}操作更改了点,因此{{.Photo}}在 的内部{{range .Pages}}将根据 的元素进行解析.Pages。
用于$引用传递给模板执行的“外部”原始值:
src="{{$.Photo}}"
虽然这只是一个整数,但您可能希望在路径或 URL 中使用它,如下所示:
src="/path/to/images?id={{$.Photo}}"
注意:如果你想为所有页面使用不同的图像,你必须为每个页面传递不同的数字,而不仅仅是一个。然后在页面中添加一个Photo字段,然后你就可以在你原来的代码中的{{range}}as里面引用它了{{.Photo}}。
你写了你不能修改,Page因为它来自你的数据库。如果是这样,那么要么传递一段随机数并index像这样访问它们:
min := 1
max := 1563
Photos := make([]int, len(pages))
for i := range Photos {
Photos[i] = rand.Intn(max - min + 1)
}
tmpl.ExecuteTemplate(w, "index.html", struct {
Pages []Page
CurrentPage int
TotalPage int
NextPage int
PreviousPage int
LastPage int
ShowNext bool
ShowPrevious bool
Photo []int
}{
Pages: pages,
CurrentPage: pageIndex + 1,
TotalPage: totalPaginationPage,
NextPage: pageIndex + 1,
PreviousPage: pageIndex - 1,
LastPage: totalPaginationPage - 1,
ShowNext: pageIndex+1 < totalPaginationPage,
ShowPrevious: pageIndex-1 >= 0,
Photo: Photos,
})
在模板中:
{{range $idx, $page := .Pages}}
<a href="{{.Slug}} "><img
src="{{index $.Photos $idx}}"
alt=""/>
</a>
{{end}}
或者注册一个random可以从模板调用的函数:
// Parse the template as you did, but first register a random function:
min, max := 1, 1563
tmpl, err := template.New("").Funcs(template.FuncMap{
"random": func() int { return rand.Intn(max - min + 1) },
}).ParseFiles("template-name.html")
您可以像这样从模板中调用它:
{{range .Pages}}
<a href="{{.Slug}} "><img
src="{{random}}"
alt=""/>
</a>
{{end}}
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报