是否有可能{{range pipeline}} T1 {{end}}在text/template包中的操作中访问范围操作之前的管道值,或者作为参数传递给 Execute 的父/全局管道?显示我尝试做的工作的示例:package mainimport ( "os" "text/template")// .Path won't be accessible, because dot will be changed to the Files elementconst page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}`type scriptFiles struct { Path string Files []string}func main() { t := template.New("page") t = template.Must(t.Parse(page)) t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}})}https://play.golang.org/p/gO6w0o3FeP
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
使用 $ 变量(推荐)
从包文本/模板文档:
执行开始时,$ 设置为传递给 Execute 的数据参数,即 dot 的起始值。
正如@Sandy 指出的那样,因此可以使用$.Path
.
const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`
使用自定义变量(旧答案)
发布后几分钟就找到了一个答案。
通过使用变量,可以将值传递到range
作用域中:
const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`
- 1 回答
- 0 关注
- 171 浏览
添加回答
举报
0/150
提交
取消