猿问

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

我有 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吗?


慕容3067478
浏览 111回答 1
1回答

一只名叫tom的猫

当您用于template调用另一个模板时,dot默认情况下未设置,但您可以将值作为(可选的)第二个参数传递给template这样的:{{template "name"  pipeline}}在您的情况下,您的main.txt模板应该是{{template "start" .}} ... {{template "end" .}}dot将down的值传递给startandend模板。因为可以通过这种方式设置 的值dot,所以还可以以更复杂的方式将模板拆分为多个文件。例如,你可以有一个 HTML 模板以卡片式的方式显示用户信息,无论你想在输出中的什么地方插入这张卡片,你都可以调用模板并将它传递给用户,即使周围的模板也需要其他信息或在循环中。
随时随地看视频慕课网APP

相关分类

Go
我要回答