【问题标题】:Uncaught ReferenceError in Scala templateScala模板中未捕获的ReferenceError
【发布时间】: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)

【问题讨论】:

    标签: javascript playframework


    【解决方案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 问题。
    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2023-01-23
    • 1970-01-01
    • 2016-02-28
    相关资源
    最近更新 更多