doujian3401 2019-04-03 07:10
浏览 33
已采纳

如何设置默认选择选项以使用Golang选择标签?

First, I have found this question:

How can I set the default value for an HTML <select> element in Golang?

But in my case I don't know how to do.

I have many posts data and render them to template.

Controller:

c.Data["posts"] = posts_data

View:

{{ range $post := .posts }}
<option value="{{ $post.ID }}">{{ $post.Name }}</option>
{{ end }}

Works fine.

But if change to:

Controller:

c.Data["posts"] = posts_data
c.Data["post_id"] = param_data

View:

{{ range $post := .posts }}
<option value="{{ $post.ID }}" {{ if eq $post.ID .post_id }}selected="selected"{{ end }}>{{ $post.Name }}</option>
{{ end }}

Got error:

template Execute err: template: posts/index.tpl:20:70: executing "posts/index.tpl" at <.post_id>: can't evaluate field post_id in type models.Post

It's true that post_id doesn't exists in models.Post. But how to use it in this way?

  • 写回答

1条回答 默认 最新

  • douyinbo3361 2019-04-03 07:15
    关注

    The range command sets . to the current value. Use $ to refer to the root value passed to the template:

    {{ range $post := .posts }}
    <option value="{{ $post.ID }}" {{ if eq $post.ID $.post_id }}selected="selected"{{ end }}>{{ $post.Name }}</option>
    {{ end }}
    

    Because range sets ., the template can be simplified to:

    {{ range $post := .posts }}
    <option value="{{ .ID }}" {{ if eq .ID $.post_id }}selected="selected"{{ end }}>{{ .Name }}</option>
    {{ end }}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加