我有 1 个文件(原始文件)的模板,它按预期工作,现在当它变大时,我开始将它划分为3 files并将数据从原始文件复制并粘贴到 3 个文件,我能够看到模板已成功执行,但start模板中缺少数据end,只是main模板从中正确接收数据structData例如startTemple.txt{{define "start"}}...{{end}}main.txt (here i include both template){{template "start"}}...{{template "end"}}endTemplate.txt{{define "end"}}...{{end}}我使用以下t, err := template.New(mainTemplateName).Funcs(funcMap).ParseFiles(startPath, mainPath, endPath)err = t.Execute(templFile, structData)if err != nil { logs.Logger.Error(err)}我像以前一样使用确切的代码,问题是来自的数据structData没有出现在start生成end后的模板中,只是在main正确获取 structData 时,我在这里可能会遗漏什么?使用硬编码数据成功生成了模板(开始主端),但是应该来自的数据在生成期间没有添加到模板中structDatastartend我应该以某种方式将structDataalso添加到startandend吗?
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
当您用于template
调用另一个模板时,dot
默认情况下未设置,但您可以将值作为(可选的)第二个参数传递给template
这样的:
{{template "name" pipeline}}
在您的情况下,您的main.txt
模板应该是
{{template "start" .}} ... {{template "end" .}}
dot
将down的值传递给start
andend
模板。
因为可以通过这种方式设置 的值dot
,所以还可以以更复杂的方式将模板拆分为多个文件。例如,你可以有一个 HTML 模板以卡片式的方式显示用户信息,无论你想在输出中的什么地方插入这张卡片,你都可以调用模板并将它传递给用户,即使周围的模板也需要其他信息或在循环中。
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消