html - Golang 模板中的嵌套范围

标签 html templates go struct nested

我对此很陌生,所以我需要一点帮助。

我有两个这样的结构:

type School struct {
    ID          string
    Name        string
    Students    []Student
}

type Student struct {
    ID          string
    Name        string
}

我需要做的是,当我从第一个选择元素中选择一个学校对象时,第二个选择元素仅显示来自所选学校的学生。对象学校数组正确显示所有数据。

<div>
  <select name="school">
      {{range .Schools}}
          <option value="{{.ID}}">{{.Name}}</option>
      {{end}}
  </select>
</div>   <div>
  <select name="student">
  {{range .Students}}
          <option value="{{.ID}"> {{.Name}}</option>
       </select>
  {{end}}  </div>

我需要在第二个范围内选择诸如 selectedSchoolObject.Students 之类的内容。

提前致谢!

最佳答案

Go 模板在服务器端,在您的 Go 应用中/由您执行和呈现。

您在“学校”下拉列表中选择某项时,会在浏览器中的客户端发生。

浏览器无法执行 Go 模板。所以基本上你有两个选择:

1) 当用户更改学校下拉列表的选择时,重新呈现页面。这涉及发送一个新的 HTTP 请求,例如,您可以在 URL 参数中提供所选学校的 ID,Go 模板可能只在第二个下拉列表中呈现所选学校的学生。

2) 您可以使用 JavaScript 代码在客户端实现它。为此,您需要在呈现的 HTML 页面中包括所有学校的所有学生,例如在 JavaScript 数组中,并使用 JavaScript 代码更改学生下拉列表的内容。

阅读相关问题:

Referencing Go array in Javascript

Interactive web pages in Go

Dynamically refresh a part of the template when a variable is updated golang

Creating load more button in Golang with templates

关于html - Golang 模板中的嵌套范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44780166/

相关文章:

Java小程序在网页上运行时只显示灰色

IE 和 Prototype 1.6.0.3 的 JavaScript 问题

c++ - 基于可变参数函数参数调用类函数会导致错误

c# - 返回错误代码是否比 out 参数慢?

go - 在for循环中写入 channel 会跳过迭代

jquery - jQuery 如何找到动态生成的表中单击的按钮的行号?

html - 表格宽度超过容器的宽度

templates - Go HTML 模板中的自动资源修订文件名

php - 是否可以在 Twig 中使用 native php 函数?

go - 迭代 channel 时关闭 channel 的最佳时间