Beego模板 循环和判断几个例子
Beego模板 循环和判断几个例子
Beego的前端几乎是另一种语言。一些循环、判断,不细看文档真的做不出来。
0. Beego的View模板语法规则:
beego前端(view)统一使用了 {{ 和 }} 作为左右标签,没有其他的标签符号。
使用 . 来访问当前位置的上下文;
使用 $ 来引用当前模板根级的上下文;
使用 $var 来访问创建的变量。
1. 循环 range … end
可以接受slice, map, channel。貌似map、slice混在一起的比较多,甚至有时候会是一个json串的。
例子1(slice):
controller送来的数据:
[map[contnum:LvL-2015-001 id:2] map[contnum:LvL-2015-002 id:10] map[id:3 contnum:LvL-2015-003] map[contnum:LvL-2015-004 id:5] map[contractnum:LvL-2015-005 id:1]]
view端接受比较舒服:
{{range .ContNumAll}}
<option value="{{.contnum}}">{{.contnum}}</option>
{{end}}
例子2(map):
controller送来的数据是一个Json串,比如:
map[data:[map[Id:564b044c164d6b366f64390a Name:IBM] map[Id:564b044c164d6b366f64390c Name:DELL] map[Id:564b0458164d6b366f6439c9 Name:HP]]]
Controller里面最好先处理一下:
this.Data["DeviceBrandMap"] = DeviceBrandMap["data"]
view里面比例子1稍微复杂点儿:
{{range $ind, $elem := .DeviceBrandMap0}}
<option value="{{$elem.Name}}">{{$elem.Name}}</option>
{{end}}
map是个键值对,没错吧?所以需要用两个值接收,对吧?
例子3(更复杂的map,条件判断):
controller送来的一个Json串,比如:
map[data:[map[email: fax: name:XX网 province:北京市 provinceid:1 statid:0 type: _id:564b04cb164d6b366f644280 website: updateuser:管理员 district:朝阳区 phone:01088888888 updatetime:2015-10-10 10:10:10 addr: districtid:9 note: postcode: typeid:1 dictKey:cmdb-dict-company id:78 dict_key:]
......]]
需要过滤,当且仅当 typeid为1的时候,取name的值。也还好说,每次加个判断好了。
{{range $ind, $elem := .ManufacturerMap}}
{{if eq $elem.typeid "1"}}
<option value="{{$elem.name}}">{{$elem.name}}</option>
{{end}}
{{end}}
2. 判断 if ... else ... end
2.1 语法:{{if pipeline}}{{end}}
if 判断时,pipeline 为空时,相当于判断为 False
this.Data["IsLogged"] = true
this.Data["IsHomePage"] = true
this.Data["IsPayed"] = false
支持嵌套的循环
{{if .IsHomePage}}
{{else}}
{{if .IsPayed}}{{end}}
{{end}}
也可以使用 else if 进行
{{if .IsHome}}
{{else if .IsAbout}}
{{else}}
{{end}}
本没必要说什么,奈何判断语法比较“独特”。
2.2 eq / ne / lt / le / gt / ge 这些都是函数!
这类函数一般配合在 if 中使用,望文生义即可。
既然是函数,那么用法就是 eq .var1 $var2 或者 eq .var1 .var2,总之一句话,用来比较的几个变量要放在 这六个 函数 的后面。否则,报错没商量!
例子4(简单比较):
{{if eq .sort 0}}
// something your function likes...
{{else if eq .name "IBM"}}
// something your function likes...
{{else}}
// something your function like...
{{end}}
看到了吧?数字(整数、浮点数)都可以直接比较值;字符串必须用双引号!必须用双引号!必须用双引号!重要的事情说三遍!!!否则报错没商量。
2.3 特殊的eq函数
eq 和其他函数不一样的地方是,支持多个参数,和下面的逻辑判断相同
arg1==arg2 || arg1==arg3 || arg1==arg4 ...
记住:只有eq一个函数可以这样!其它五个函数都不可以。
与 if 一起使用
{{if eq true .Var1 .Var2 .Var3}}{{end}}
如果想处理一个逻辑——不是A也不是B也不是C,能用ne吗?绝对不行!
例子4(not和eq):
{{range $ind, $elem := .DeviceModalMap}}
{{ if not (eq $elem.Name "未知" "unknown" "unknow")}}
<option value="{{$elem.Name}}">{{$elem.Name}}</option>
{{end}}
{{end}}
not只能否定一个变量或者表达式,所以eq 函数和函数入口参数要用括号括起来。汉语字符串也是可以被支持的。
猫哥语:以上来自真实项目,代码都通过。因初学乍练,难免有不足之处,欢迎指正。
————————————————
版权声明:本文为CSDN博主「9命怪猫」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/972301/article/details/50055573
Beego模板 循环和判断几个例子的更多相关文章
- Flask初级(七)flash模板循环,判断
Project name :Flask_Plan templates:templates static:static 继续前面的代码 修改Flask_Plan.py @app.route('/') d ...
- [Go] Beego 模板嵌套 使用总结
通过以下文章,掌握了 Go 模板引擎 的基本用法: [Go] Template 使用简介 [Go] 模板嵌套最佳实践 Beego模板语法指南 但在开始学习 Beego 框架的 模板嵌套 模块源码时,有 ...
- smarty基本用法,循环,判断
require './smarty/Smarty.class.php'; $sm = new Smarty; $sm->setTemplateDir("./dir");//设 ...
- .NET Core CSharp初级篇 1-2 循环与判断
.NET Core CSharp初级篇 1-2 本节内容循环与判断 循环 循环是一个在任何语言都是极为重要的语法,它可以用于很多东西,例如迭代数组等等.在C#中,语法层面的循环有:for , fore ...
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
一.首先说下本篇博客所实现功能的背景和功能是怎样的: 背景:因为公司项目开始迁移新平台项目,所以以前的平台老数据以及订单信息需要拆分表,而且需要业务逻辑来分析以前的订单表,来拆分成另外的几个新表,包括 ...
- Java 变量、循环、判断
粗糙笔记不喜勿喷 Java 8大基本类型 第一类:逻辑型(boolean) 1.boolean类型只存在true(真),false(假)两种形式 例: boolean a=true; boolean ...
- Angular4.x 创建组件|绑定数据|绑定属性|数据循环|条件判断|事件|表单处理|双向数据绑定
Angular4.x 创建组件|绑定数据|绑定属性|数据循环|条件判断|事件|表单处理|双向数据绑定 创建 angular 组件 https://github.com/angular/angular- ...
- [置顶] ios 无限循环翻页源码例子
原创文章,转载请注明出处:http://blog.csdn.net/donny_zhang/article/details/9923053 demo功能:ios 无限循环翻页源码例子.iphone 6 ...
- Django 模板语言 条件判断
Django 模板语言 条件判断 ############### 条件 ################## # view 文件 def func(request): ... return rende ...
随机推荐
- centos7安装node.js
安装版本:node-v10.15.3 一.安装必要的编译软件包 # yum install gcc gcc-c++ -y 二.从源码下载Nodejs 进入官网选择自己需要的版本 https://nod ...
- 用C语言实现汉诺塔自动递归演示程序
用C语言实现汉诺塔自动递归演示程序 程序实现效果 1.变界面大小依照输入递归数改变. 2.汉诺塔自动移动演示. 3.采用gotoxy实现流畅刷新. 4.保留文字显示递归流程 程序展示及实现 githu ...
- Java的异常处理机制
异常 异常指的是,程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 由图可知,异常的根类是throwable.其下有两个子类 Error:严重错误Error,无法通过处理的错误,只 ...
- spring boot 打包jar后访问classes文件夹的文件提示地址不存在
报错内容:class path resource [client.p12] cannot be resolved to absolute file path because it does not r ...
- 算法训练 最大获利 注意数据规模(long long)
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Chakra是一位年轻有为的企业家,最近他在进军餐饮行业.他在各地开拓市场,共买下了N个饭店.在初期的市场调研中,他将一天划分为M ...
- 解决BitLocker反复提示恢复密钥正确而无法进入系统的问题
前一阵电脑因为装了grub,引导策略被改了.开Windows要求输入恢复密钥以进行恢复.我登陆过Microsoft账户所以在官网上找到了密钥并恢复了驱动器.但是进去提示"恢复密钥正确&quo ...
- C#在屏幕画点
Graphics类没有提供直接画点的方法,最开始想使用填充圆形区域來实现,结果发现点很大,占据了4个像素.使用起点和终点一样来划线什么也没画出.画矩形,画椭圆都没实现.最后试到填充矩形,这次成功了. ...
- 吴裕雄--天生自然 R语言数据可视化绘图(4)
par(ask=TRUE) # Basic scatterplot library(ggplot2) ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_poin ...
- P2919 [USACO08NOV]守护农场Guarding the Farm
链接:P2919 ----------------------------------- 一道非常暴力的搜索题 ----------------------------------- 注意的是,我们要 ...
- Arduino上搭建ESP8266环境
我尝试了各种方法都无法在Arduino上安装ESP8266的环境,最后发现离线安装最稳妥. 1. 下载安装包,提取码:pktw 2. 将安装包内所有文件拷贝到C:\Users\Administrato ...