beego视图模板循环range中对变量的对比,测试示例栏目中对比变量后选中功能
beego文章编辑中实现文章栏目默认选中功能示例,可以接上一篇在beego中添加文章功能
因为问发布文章功能已经开发完(有需要是自行翻阅下面url)
https://www.zongscan.com/demo333/89503.html
现在编辑文章,我直接在添加的视图模板上操作,就是添加编辑公用模板了
编辑控制器就多了个根据文章id返回该id的文章信息至视图模板中,
然后根据这个判断是添加还是编辑 , 这里就不过多介绍
我直接到主题:
栏目默认选中功能
路由:
直接是文章编辑
控制器:
栏目数据我统计在基类中返回视图
无相关代码省略...
...
//编辑数据
func (c *ArtController) Editart() {
//注:
//获取path参数,如 /editart/{id} 用c.Ctx.Input.Param(":id")
//获取query参数,如 /?id=1 用c.Ctx.Input.Query("id")
idStr := c.Ctx.Input.Query("id")
id, _ := strconv.Atoi(idStr)
o := orm.NewOrm()
//文章
art := models.Art{Art_id: id}
err := o.Read(&art)
if err != nil {
c.TplName = "login.html"
return
}
c.Data["art"] = art
fmt.Println("edit", id, art.Cat_id, art)
c.TplName = "addart.html"
}
视图:
我的栏目是直接在视图view中使用range嵌套if
使用select下拉是用if判断然后给默认选中, 给html关键字selected
这里不能用==或eq 会直接报错:
template:
...
error calling eq: invalid type for comparison
所以要直接用变量对比函数compare,该函数是beego的模板函数
函数描述及使用:
实现了比较两个对象的比较,如果相同返回 true,否者 false
使用方法:
{{compare .A .B}}
无相关省略...
...
<label>栏目:</label>
{{$cid := .art.Cat_id}}
<select name="cat_id" class="form-control">
{{range $ind, $elem := .cats}}
<option value="{{$elem.cat_id}}" {{if compare $elem.cat_id $cid}} selected="selected" {{end}}>{{$elem.catname}}</option>
{{end}}
</select>
...
ps:
这里有个直接赋值操作 外面的变量值需要重新赋值一个变量
{{$cid := .art.Cat_id}}
不然在循环中打印出来要么是乱码,要么是空的,具体原因这里就不细聊,可自行谷歌搜索
看看效果图:
相关文章