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

时间:2019-04-03 07:10:05

标签: go

首先,我发现了这个问题:

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

但就我而言,我不知道该怎么办。

我有很多帖子数据,并将它们渲染为模板。

控制器:

c.Data["posts"] = posts_data

查看:

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

很好。

但是如果更改为:

控制器:

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

查看:

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

错误:

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

post_id中不存在models.Post。但是如何以这种方式使用它?

1 个答案:

答案 0 :(得分:2)

范围命令将.设置为当前值。使用$引用传递给模板的根值:

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

由于范围集.,因此模板可以简化为:

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