当前位置: 首页 > 面试题库 >

模板包含的模板中的变量

樊琦
2023-03-14
问题内容

我试图将值放入“标题”模板中,例如标题和导航链接,但无法访问我从包含的模板发送到主模板的变量。

渲染模板:

    ...
    templateName := "index"
    args := map[string]string{
            "Title":       "Main Page",
            "Body":        "This is the content",
    }
    PageTemplates.ExecuteTemplate(w, templateName+".html", args)
    ...

index.html模板:

   {{template "header"}} <-- Including the "header.html" template
   {{.Body}}             <-- Variable that works
   {{template "footer"}} <-- Does not matter!

header.html模板:

   {{define "header"}}
   <!DOCTYPE html>
   <html lang="en">
   <head>
            <title>{{.Title}}</title> <-- Variable empty :(
   </head>
   <body>
   {{end}}

显然,它不会那样工作。

也许有一种方法可以解析/获取模板并将变量放入其中,而无需将整个头文件放入代码中?然后,我可以将该模板作为变量发送到我的主模板。但这似乎并不是最好的方法。


问题答案:

您可以在调用模板时将上下文传递给模板。在您的示例中,更改{{template "header"}}{{template "header" .}}应该足够。

官方文档的相关部分:

{{template“ name”}}
使用零数据执行具有指定名称的模板。

{{模板“名称”管道”}}
执行指定名称的模板,将点设置为管道的值。

PS:这是不相关的问题,但你也应该删除换行符之间{{define "header"}}<!DOCTYPE html>,使DOCTYPE是真的在你的模板中的第一件事情。



 类似资料:
  • 问题内容: 在以下情况下如何使用包含。目的是在html(部分)文件中使用标记,而不是在模板中(在指令内)定义标记。 我在这里找到了一个很棒的树指令。( 来源)原文: http //jsfiddle.net/n8dPm/ 我没有在指令中定义模板,而是尝试使用包含在内的内容。我还将Angular更新为1.2.0.rc2。更新时间:http://jsfiddle.net/aZx7B/2/ 低于错误 Ty

  • 问题内容: 我在主布局文件中有这个 我的目录结构中有header.html部分模板。 如何在我的应用程序中包含此模板?我认为angular在处理完控制器后会自动包含模板,但是它不起作用。 标头节点应替换为此文件的内容。 问题答案: 包含来自外部文件的模板/ html片段的一种方法是使用指令(doc)。 要么

  • 在angular 2中,我需要创建一个包含冗余部分的大型html模板。因此,我想创建多个html模板,并通过将它们包含在主html文件中(如angular1中的ng include)将它们放在一起 但是如何在主模板中包含子模板? 例如: - -

  • 对于多个页面包含的公共内容,可能会被封装到一个公共模板文件中。 比如左侧导航,文件位置和其他普通模板是一样的,/App1/View/Home/Nav.left.html 其他模板引用局部模板使用标签:{include:模块名称:操作名称}  //比如:{include:Public:header} 本文中引用左侧导航模板:{include:Nav:left} //两边是大括号,中间是冒号。 注:局

  • 是否有一种方法可以将Thymeleaf模板存储在与类相同的包中而不是或?例如,这样的结构: 为了实现这一点,我必须如何配置Spring和Thymeleaf?

  • template.defaults.imports 模板通过 $imports 可以访问到模板外部的全局变量与导入的变量。 导入变量 template.defaults.imports.log = console.log; <% $imports.log('hello world') %> 内置变量清单 $data 传入模板的数据 $imports 外部导入的变量以及全局变量 print 字符