gpt4 book ai didi

内联时未定义javascript变量

转载 作者:行者123 更新时间:2023-11-30 19:54:20 25 4
gpt4 key购买 nike

背景:

我正在使用 PlayFramework创建一个使用 Twirl template engine 的 webapp(工作流)系统(基于 scala)来创建我的 View 。

问题:

我需要在我的模板(呈现 HTML)中存储 JavaScript 变量,在单独的 JS 文件中,稍后我将执行操作。

有任何现有的解决方案吗?

这可以根据我发现的这些SO问题来完成:

  1. This one创建一个 map ,其中存储数据并在以后检索数据。

  2. This one创建一个将变量存储在内联脚本标记中以供稍后使用的简单示例

  3. 最后,this one使用一个更具体的例子,将数据存储在模板中的数据结构中,并在解析后访问JS中的数据结构。

由活跃的 SO 贡献者创建的示例,Biesior , 帮助许多开发者玩!框架问题

总结应该做什么:

  1. 将一些数据传入模板

@(myData: DataObject)

  1. 将传入的数据添加到带有JS名称的脚本标签中

<html>
<body>
<script>
let someJSDataName = @myData
</script>
</body>
</html>

  1. 在 JS/Google Chrome 开发控制台中使用

someJSDataName.toString

应该显示一些结果!

但问题是什么?

让我告诉你。

呈现的 HTML:

//...
<div class="BoxMediumBlue" style="padding: 20px;">

<script>
let facultyDepartments = {Science=[Computer Science, Physics], Biology=[Zooology]};
</script>

<br>
<div class="container-heading">
//...

尝试在我的 Google Chrome 开发者控制台中访问此数据时:

facultyDepartments
VM1209:1 Uncaught ReferenceError: facultyDepartments is not defined
at <anonymous>:1:1

仅供引用,使用 var 没有区别

我做错了什么吗?

最佳答案

您对 facultyDepartments 的定义使用了 JS 引擎无法理解的语法:

let facultyDepartments = {Science=[Computer Science, Physics], Biology=[Zooology]};

对象应包含键值对,其中键和值由 : 分隔,并且键和值在字符串时具有分隔符,如 "'。您应该尝试让模板改为呈现 JSON,例如:

let facultyDepartments = {"Science":["Computer Science", "Physics"], "Biology":["Zooology"]};
console.log(facultyDepartments.Science);

(从技术上讲,JSON 是一种格式化字符串 的方法,但插入不带定界符的 JSON 字符串也可以将其解析为对象文字)

关于内联时未定义javascript变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54173814/

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