Как установить выбранную по умолчанию опцию для выбора тега с Golang? - PullRequest
1 голос
/ 03 апреля 2019

Во-первых, я нашел этот вопрос:

Как установить значение по умолчанию для элемента HTML

Но в моем случаеЯ не знаю, как это сделать.

У меня есть много данных постов и они отображаются в шаблоне.

Контроллер:

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 Ответ

2 голосов
/ 03 апреля 2019

Команда диапазона устанавливает . на текущее значение. Используйте $ для ссылки на корневое значение, переданное шаблону:

{{ 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 }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...