为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 HTML go-gin 的所有 js 文件中访问变量

如何在 HTML go-gin 的所有 js 文件中访问变量

Go
SMILET 2022-03-03 16:10:24
我正在使用 gin 模板并呈现我使用的 HTMLc.Writer.Header().Set("username", "myname")c.HTML(200, "myservices", gin.H{    "title":    "Dashboard",    "username": "myname" })我想传递一个变量(用户名),以便我可以在附加到我的模板的 js 文件中访问它。我可以使用模板访问用户名变量{{.username}}。如何使其全局化,以便我也可以在所有 js 文件中访问它。我尝试在标题中设置它,但只有在加载 HTML 时才能访问它。在加载模板之前我将无法使用它。
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您可以将 Javascript 代码插入到<head>您创建 Javascript 变量的 HTML 页面(例如,在该部分中),并使用传递给模板执行的参数初始化它们。


看这个例子:


func main() {

    t := template.Must(template.New("").Parse(templ))

    m := map[string]interface{}{

        "title":    "Test page",

        "username": "bob",

        "counter":  12,

    }

    if err := t.Execute(os.Stdout, m); err != nil {

        panic(err)

    }

}


const templ = `<html><head>

<script>

    var _title = {{.title}};

    var _username = {{.username}};

    var _counter = {{.counter}};

</script>

</head><body>

</body>

</html>`

这会生成一个 HTML 文档(在Go Playground上试试):


<html><head>

<script>

    var _title = "Test page";

    var _username = "bob";

    var _counter =  12 ;

</script>

</head><body>

</body>

</html>

这意味着页面中的其他 Javascript 代码(内联或引用的,外部的)将看到变量_title,并将它们用作常规变量,并使用我们传递给的值初始化_username它们。_counterTemplate.Execute()


请注意,该html/template包执行上下文转义。看到它{{.title}}在引号中插入了结果,因为它是 a string,这就是它应该用 Javascript 代码编写的方式,但是在插入 的结果时没有添加引号{{.counter}},因为它是 type 的值int。


另请注意,您应该使用唯一的命名策略以避免与现有变量或可能在其他 Javascript 代码中使用的变量发生冲突。通常一个特殊的前缀(或后缀)会这样做。


查看完整回答
反对 回复 2022-03-03
  • 1 回答
  • 0 关注
  • 323 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号