猿问

转到模板功能

当我尝试使用Funcs和时,它注意到Go模板很奇怪FuncMap。下面的代码按预期工作:


buffer := bytes.NewBufferString("")


funcMap := template.FuncMap{

    "label": strings.Title,

}


t, _ := template.New("alex").Funcs(funcMap).Parse("{{label \"alex\"}}") 


t.Execute(buffer, "")


return string(buffer.Bytes()) //=> "Alex"

但是,当我尝试将模板放在文件中时,它不起作用(Execute()说:)"alex" is an incomplete or empty template:


t, _ := template.New("alex").Funcs(funcMap).ParseFiles("template.html") 

使用template.html:


{{label \"alex\"}}

知道为什么吗?这是一个错误吗?有没有更简单的方法在模板中使用方法/功能?


慕桂英3389331
浏览 200回答 3
3回答

守候你守候我

ParseFiles可能会使用更好的文档。一个模板对象可以包含多个模板,每个模板都有一个名称。如果查看ParseFiles的实现,则会看到它使用文件名作为模板对象内部的模板名称。因此,将文件的名称与模板对象的名称相同(可能通常不实用),否则请使用ExecuteTemplate而不是Execute。

阿波罗的战车

您需要首先解析所有文件并执行它们。您不能直接访问所有文件。
随时随地看视频慕课网APP

相关分类

Go
我要回答