如何在范围内的Golang模板中显示变量

How to show variable in Golang template inside range

我在服务器上有一些代码:

c.HTML(http.StatusOK, "videos.html", gin.H{
    "files": files, //slice
    "errMessage": errMessage,
})

我在客户端有一些代码:

{{ range .files }}
<tr>
  <td>{{.}}</td>
  <td><a href="/download?filename={{.}}" style="color:blue;">Download</a></td>
  <td><a href="/delete?filename={{.}}" style="color:red;">Delete</a></td>
  <td><button id="{{.}}">Посмотреть</button></td>
  {{ if .errMessage }} <td style="color:red;">Processing...</td>
  {{ else }} <td>Done</td> {{ end }}
</tr>
{{ end }}

如何处理.errMessage?

你能告诉我错误信息是什么吗?我推断您的 .errMessage 超出了 {{ range .files }} 语法的范围。

因此,要解决此问题,您只需在 {{ range .files }} 语法之上声明 .errMessage

虽然没有必要在顶部声明它,但这里的主要关键是您应该将 .errMessage 分配给模板内的另一个变量。

看起来像这样(根据您的示例):

...
{{ $errMessage := .errMessage }}

{{ range .files }}
<tr>
  <td>{{.}}</td>
  <td><a href="/download?filename={{.}}" style="color:blue;">Download</a></td>
  <td><a href="/delete?filename={{.}}" style="color:red;">Delete</a></td>
  <td><button id="{{.}}">Посмотреть</button></td>
  {{ if $errMessage }} <td style="color:red;">Processing...</td>
  {{ else }} <td>Done</td> {{ end }}
</tr>
{{ end }}
...

希望对您有所帮助!干杯!