gpt4 book ai didi

javascript - 在 Javascript 中引用 Go 数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:27:40 25 4
gpt4 key购买 nike

我有一个 Golang 数组,我正在前端传递给我的 html 文件。

我知道

'{{ index .Array 0}}' 

工作并从数组中提取第一个元素。但我想做一个 Javascript for 循环并像这样打印数组中的每个元素

<script type="text/javascript">
function loop() {

html = ""
for(var i = 0; i<5; i++) {
html += "{{ index .Array " + i + "}}";
}
}

但这行不通。关于分离 go 数组索引字符串的一些事情,HTML/Javascript 不喜欢它,它不会加载。

这是一个语法错误,我无法确定。

有什么想法吗?

最佳答案

你需要明白一些事情:

{{index .Array 0}} 等模板操作在您的 Go 应用程序的服务器端执行。

Javascript 代码在浏览器的客户端 端被解释和运行。

模板操作中使用的模板参数值(在您的示例中为 Array)在客户端不存在(例如,作为 Javascript 对象)。 Javascript 代码不由模板引擎运行。所以模板参数(值)和 Javascript(执行)存在于 2 个不同的“空间”中。

话虽如此,混合使用模板操作/变量和 Javascript 执行是不可能的。

你有两个选择:

1) 用模板 Action 做你想做的事。

2) 使用模板创建 Javascript 代码,当在客户端执行时,该代码将构造/重新创建数组作为 Javascript 对象,以便它可用于进一步的 Javascript 处理。

请注意,如果您只想遍历数组一次,则不必创建 Javascript 数组,您可以简单地渲染 JavaScript 代码,该代码将作为 {{range}} 中的循环体> 模板操作。参见 Simon's answer以此为例。

阐述#1

你可以使用{{range .Array}} Action 来循环遍历Array,并且为每个元素执行 block ,管道设置为数组元素所以您可以像这样输出数组元素:

{{range .Array}}
{{.}}
{{end}}

当然,您可以在 block 中放置任何其他内容,而不仅仅是数组元素。您甚至可以像这样访问当前索引:

{{range $idx, $value := .Array}}
Index = {{$idx}}; Element = {{$value}}<br>
{{end}}

详述#2

假设您的 Array 包含 int 数字,您可以在 Javascript 中重新创建它并使用如下模板在 Javascript 中循环它:

<script>
var arr = [
{{range .Array}}
{{.}},
{{end}}
];

// Now you have a javascript array: arr, loop over it to do something:
html = "";
for(var i = 0; i < arr.length; i++) {
html += " " + arr[i];
}
</script>

或者由于模板引擎支持将数组和 slice “渲染”为 JavaScript 数组,您可以简单地编写:

<script>
var arr = {{.Array}};

// Now you have a javascript array: arr, loop over it to do something:
html = "";
for(var i = 0; i < arr.length; i++) {
html += " " + arr[i];
}
</script>

关于javascript - 在 Javascript 中引用 Go 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com