我对此很陌生,所以我需要一点帮助。
我有两个这样的结构:
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
Dynamically refresh a part of the template when a variable is updated golang
关于html - Golang 模板中的嵌套范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44780166/