go - html/模板 : optional outer element around sub-template if it's not empty

标签 go

我有一个带有内部内容模板的模板,我想以内部内容周围有一个外部包装元素的方式呈现它,只有当内容不为空时才会显示。

例如:

...
{{if template-content-exists-and-not-blank}}
  <div class="content">
   {{template "content" .}}
  </div>
{{end}}
...

我想渲染 <div>仅当 {{template "content" .}} 的结果时不是空的。我不想把封闭的 <div>进入内容,因为它实际上并不属于那里,并且它将在所有内容子模板中复制。

  1. 我不能使用 {{template ...}}作为函数参数,因此无法对其进行测试。
  2. 我写了一个自定义 defined测试是否定义了子模板的 bool 函数,但是 content template不管是true还是false都会执行(不会短路),没有定义显然失败。

    t.Funcs(
        html.FuncMap{
            "defined": func(name string) bool {
                return t.Lookup(name) != nil
            },
        },
    )
    

最佳答案

您需要做以下两件事之一:

  1. 将包含标签放在子模板中
  2. 预渲染子模板并将其作为字符串传递给外部模板

关于go - html/模板 : optional outer element around sub-template if it's not empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44931422/

相关文章:

go - 为什么 Go 生成的 protobuf 文件包含互斥锁?

javascript - 在GO中通过http请求检索网站DOM

go - 在golang中获取s3对象过期

Golang 子项目或子模块依赖项

json - 将yaml转换为不带结构的json

go - 如何使用 golang id3-go 库获取和打印 mp3 Popularimeter 框架

go - 使用go从ftp服务器解压部分gz文件

go - 文件专用的全局变量

amazon-web-services - 在 Golang 中使用 UploadPartCopy 到 MultiPartUpload 时遇到 AccessDenied

regex - Golang 正则表达式替换不包括带引号的字符串