关于GoLang嵌套模板和数据的问题

GoLang本身的嵌套模板机制感觉非常爽,但是有一个问题就是与数据结合的时候,数据只能与选择结合的那层数据结合、渲染……也就是说被嵌套的模板没办法获得数据…… 譬如A模板包含了B、C、D模板,三个模板都是不完整的、需要复用的,也都需要传入数据。然而executetemplate(w,A,data)却只能让data和A结合渲染,B、C、D没办法拿到数据…… 我刚学GoLang也对整体不是很理解,于是问题来了,该如何将被嵌套的模板与传入的上下文数据结合渲染? (啊为什么Go渲染一定要输出呢,不能传一个渲染好的对象么)

共 8 个回复


snake117

没看懂你的意思,我咋觉得go的模板完全可以满足要求呢?

一次只能渲染一个模板,也只提供一个数据,如果模板内部嵌套了模板,那你提供的数据就应包含提供给嵌套模板的数据,内部嵌套模板完全可以从上一层模板获取数据的啊?

# 0

David

渲染的结果都写到w里了(变成bytes)你可以拿过来继续搞的呀

# 1

seefan

被嵌套的模板是可以得到数据变量的,只是你用法不对

{{include "file.html" datacontext}}

datacontext 就是你要传入的数据上下文,如果要全部传入,只要传入一个点就可以

{{include "file.html" .}}

# 2

gman

楼上的正解

# 3

Clounea

谢谢三楼,我刚接触确实不太会搞,还不怎么懂这个模板的语法、类C表达式之类的……OTL……去翻Doc也有很多不懂……可以的话能指引一下在哪里、怎么查这些用法么……

# 4

Clounea

{{template "B" .}}成功,感觉好像函数,多谢大家哈哈哈

# 5

netuml

解决了我的问题

# 6

zhangfei_jiayou

{{template “B” .}}就是后面的“.” 解决了我问题,翻阅了多少书,都只是{{template “B”}}这样类似的描述,哎。。。

# 7