为了账号安全,请及时绑定邮箱和手机立即绑定

多个文件的划分模板不提供数据

多个文件的划分模板不提供数据

Go
慕容3067478 2023-03-29 15:41:45
我有 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条经验 获得超2个赞

当您用于template调用另一个模板时,dot默认情况下未设置,但您可以将值作为(可选的)第二个参数传递给template这样的:

{{template "name"  pipeline}}

在您的情况下,您的main.txt模板应该是

{{template "start" .}}
...
{{template "end" .}}

dot将down的值传递给startandend模板。

因为可以通过这种方式设置 的值dot,所以还可以以更复杂的方式将模板拆分为多个文件。例如,你可以有一个 HTML 模板以卡片式的方式显示用户信息,无论你想在输出中的什么地方插入这张卡片,你都可以调用模板并将它传递给用户,即使周围的模板也需要其他信息或在循环中。


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信