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的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的 ReferenceError:Flutter 中未定义 firebase
jquery.d.ts 文件中未捕获的 SyntaxError