- 注释
{{/* 注释 */}}
- 变量渲染
{{.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
{{and x y}} //等同于Golang中的:x and y
- or
{{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”的布尔值
{{eq arg1 arg2 arg3 arg4}}
//eq只接受两个参数进行比较,对于简单的多路相等测试,后面其它的参数将分别依次与第一个参数进行比较
//相当于:arg1==arg2 || arg1==arg3 || arg1==arg4 ...
- 【ne】 返回表达式“arg1 != arg2”的布尔值
- 【lt】 返回表达式“arg1 < arg2”的布尔值
- 【le】 返回表达式“arg1 <= arg2”的布尔值
- 【gt】 返回表达式“arg1 > arg2”的布尔值
- 【ge】 返回表达式“arg1 >= arg2”的布尔值