html / template:子模板周围的可选外部元素,如果它不为空

时间:2017-07-05 16:20:46

标签: go

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

例如:

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

我想仅在<div>的结果不为空时呈现{{template "content" .}}。我不想将封闭的<div>放入内容中,因为它并不真正属于那里,并且它将在所有内容子模板中重复。

  1. 我不能将{{template ...}}用作函数参数,因此无法对其进行测试。
  2. 我编写了一个自定义defined布尔函数,用于测试是否定义了子模板,但是content模板是执行的,无论它是真还是假(没有短路) ,如果没有定义,显然会失败。

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

1 个答案:

答案 0 :(得分:0)

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

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