Scala模板中未捕获的ReferenceError

Posted

技术标签:

【中文标题】Scala模板中未捕获的ReferenceError【英文标题】:Uncaught ReferenceError in Scala template 【发布时间】:2018-03-09 13:48:37 【问题描述】:

我正在尝试在 javascript 中访问 Scala 值,但它给了我错误。

Scala 模板 - login.scala.html :-

@import com.tempapp.Constants.Languages

<html>
   ...
</html>

<script>
var langs = @Languages.values; // Error
   ...
</script>

Languages 是一个枚举:-

public enum Languages
   ENGLISH, VIETNAMESE;

错误:- 未捕获的 ReferenceError:未定义 ENGLISHVIETNAMESE 在 HTML 文档。 (商家:282) 在 j (jquery-2.1.4.min.js:2) 在 Object.fireWith [as resolveWith] (jquery-2.1.4.min.js:2) 在 Function.ready (jquery-2.1.4.min.js:2) 在 HTMLDocument.I (jquery-2.1.4.min.js:2)

【问题讨论】:

【参考方案1】:

您不能像这样将 enum 的值转储到 Javascript 变量中。

您需要将您的enum 转换为逗号分隔的字符串,然后将其包含在[] 中:

var langs = [@Arrays.toString(Languages.values()).replaceAll("^.|.$", "").replaceAll("(?<=[\n, ]?)([^\n, ]+)(?=[\n, ]?)","'$1'")];

对于带有@Prefix 的版本,您只需将Scala 变量括在引号内:

var prefix = '@Prefix';

【讨论】:

问题不在于如何拆分枚举中的值,而是问题在于错误,为什么我无法访问脚本标签中的 scala 变量。检查更新的问题。 @ParagKadam 您可以很好地访问您的变量,只是您不知道如何将它们存储在 Javascript 中。检查我的代码,它会工作。您的代码正在执行 var prefix = en;,这不是一个有效的 Javascript 声明,因为变量 en 之前没有定义。 请检查我修改后的问题,它甚至不允许我存储字符串。 @ParagKadam 没问题,您仍应编辑您的问题以添加您的enum 问题。

以上是关于Scala模板中未捕获的ReferenceError的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC VC++ 中未捕获 MouseWheel 事件

未捕获的 ReferenceError:Flutter 中未定义 firebase

jquery.d.ts 文件中未捕获的 SyntaxError

ASP.NET:在 global.asax 中未捕获安全异常

Vue.js:vuex 操作中未捕获的承诺

来自第 3 方静态库的回调中未捕获的异常