{{/* 注释 */}}
{{.Name}}
//go模板,with语句就是创建一个封闭的作用域
{{with "world"}}
{{.}}
{{end}}
{{define "header"}}
<div>title</div>
{{end}}
//使用子模板
{{template "header"}}
用法1:
//调用一个无参的函数,类似function()
{{FuncName}}
用法2:
//调用一个有参的函数,类似split(str,",")
{{split .str "," }}
用法3:
将竖线“|”左边的变量值作为函数参数传送
//调用一个有参的函数,类似trim(str)
{{.str | trim }}
//调用多个函数
{{.str | trim | len}}
{{if condition}}
//...
{{else}}
//...
{{end}}
【技巧】如果需要去除空行,则需要使用以下方法
{{- if condition}}
//...
{{- else}}
//...
{{- end}}
用法一:
{{range $key,$value := .Lists }}
//{{$key}} => {{$value}}
{{end}}
用法二:
{{range .Lists }}
//{{.}}
{{end}}
用法三:
{{range .var}}
//{{.}}
{{else}}
//没有可遍历的值时,则执行else
{{end}}
{{template "header.html"}}
//向子模板传值
{{template "header.html" .}}
预定义的模板全局函数
{{and x y}}
//等同于Golang中的:x and y
{{or x y}}
//等同于Golang中的:x || y
call
//call 第一个参数必须是一个函数,其余参数作为该函数的参数
{{call add 1 2}}
html
转义文本中的html标签,如将“<”转义为“<”,“>”转义为“>”等
index
返回index后面的第一个参数的某个索引对应的元素值,其余的参数为索引值
{{index .array 1 2 3}}
//表示:array[1][2][3]
//array必须是一个map、slice或数组
js
返回用JavaScript的escape(编码)处理后的文本
len
返回参数的长度值(int类型)
not
返回参数的否定值(bool类型)
print
fmt.Sprint的别名
printf
fmt.Sprintf的别名
println
fmt.Sprintln的别名
urlquery
url参数编码
Revel函数
append
向数组添加变量或创建数组
{{append . "moreScripts" "js/jquery-ui-1.7.2.custom.min.js"}}
{{range .moreStyles}}
<link rel="stylesheet" type="text/css" href="/public/{{.}}">
{{end}}
checkbox
帮助构造HTML复选框输入元素,例如:
{{with $checkboxField := field "testField" .}}
{{checkbox $checkboxField "someValue"}}
{{end}}
date, datetime, timeago
根据应用程序设置的默认日期和时间格式格式化日期。
{{date .MyDate}}
{{datetime .MyDateTime}}
even 取余,N % 2 == 0 这是一个方便表格行着色的函数。
{{range $index, $element := .results}}
<tr class="{{if even $index}}light-row{{else}}dark-row{{end}}">
//...
</tr>
{{end}}
field
输入字段的助手函数
给定一个字段名,它返回一个包含以下成员的结构:
Id: 字段名,已转换为适合作为HTML元素ID。
Name: 字段名
Value: 当前ViewArgs字段的值
Options:当前ViewArgs选项列表
Flash: 字段的flash值.
Error: 有与此字段关联的错误信息
ErrorClass: 原始字符串“haserror”, 如果有错误时显示此样式, 否则为 ""
{{with $field := field "booking.CheckInDate" .}}
<p class="{{$field.ErrorClass}}">
<strong>Check In Date:</strong>
<input type="text" size="10" name="{{$field.Name}}"
class="datepicker" value="{{$field.Flash}}"> *
<span class="error">{{$field.Error}}</span>
</p>
{{end}}
选项列表可以使用闪存来设置选项
c.ViewArgs["options"] = map[string][]string{
"record.Status": map[string][]string{"Started","Ongoing", "Finished"},
}
i18ntemplate
msg
nl2br
将换行符转换为HTML换行符。
<div class="comment">{{nl2br .commentText}}</div>
option
构造HTML option 标签的助手函数
{{with $field := field "booking.Beds" .}}
<select name="{{$field.Name}}">
{{option $field "1" "One king-size bed"}}
{{option $field "2" "Two double beds"}}
{{option $field "3" "Three beds"}}
</select>
{{end}}
pad 在给定的字符串上加上空格字符" "
{{pad "my string", 8}}
pluralize 正确复数单词的助手函数。
There are {{.numComments}} comment{{pluralize (len comments) "" "s"}}
radio 构造HTML Radio元素,例如:
{{with $field := field "booking.Smoking" .}}
{{radio $field "true"}} Smoking
{{radio $field "false"}} Non smoking
{{end}}
raw
打印未编码的原始文本。
<div class="body">{{raw .blogBody}}</div>
set 设置变量内容
{{set . "title" "Basic Chat room"}}
<h1>{{.title}}</h1>
SLUG 创建一个slug
{{slug "SomeThing String"}}
url
根据Controller.Method解析路由地址
<a href="{{url "MyApp.ContactPage"}}">Contact</a>
Click <a href="{{url "Products.ShowProduct" 123}}">here</a> for more.
自定义函数
布尔函数
{{eq arg1 arg2 arg3 arg4}}
//eq只接受两个参数进行比较,对于简单的多路相等测试,后面其它的参数将分别依次与第一个参数进行比较
//相当于:arg1==arg2 || arg1==arg3 || arg1==arg4 ...