【问题标题】:How to escape/quote elements of Scala collection to pass to AngularJS initialization?如何转义/引用 Scala 集合的元素以传递给 AngularJS 初始化?
【发布时间】:2017-11-10 18:09:26
【问题描述】:

我需要为 angularjs 自动完成指令初始化一组字符串常量。也许还有另一种方法,但我这样做是将值注入相关的 Ctrl。为此,我在index.scala.html 中定义了这些值,如下所示。请注意,CcyPair 是 Scala 枚举类型:

<script>
    angular.module("backTestDemoApp").value("ccyPairs",
        [
            @CcyPair.values.map("'%s'".format(_)).mkString(",")
        ]
    );
</script>

我想把它作为 HTML 输出:

<script>
    angular.module("backTestDemoApp").value("ccyPairs",
        [
            'CHFEUR', 'CHFGBP', 'CHFJPY', ...
        ]
    );
</script>

但我在 HTML 中得到的是这样的:

<script>
    angular.module("backTestDemoApp").value("ccyPairs",
        [
            &amp;quot;CHFEUR&amp;quot;,&amp;quot;CHFGBP&amp;quot;,&amp;quot;CHFJPY&amp;quot;,&amp;quot;CHFUSD&amp;quot;,&amp;quot;EURCHF&amp;quot;,&amp;quot;EURGBP&amp;quot;,&amp;quot;EURJPY&amp;quot;,&amp;quot;EURUSD&amp;quot;,&amp;quot;GBPCHF&amp;quot;,&amp;quot;GBPEUR&amp;quot;,&amp;quot;GBPJPY&amp;quot;,&amp;quot;GBPUSD&amp;quot;,&amp;quot;JPYCHF&amp;quot;,&amp;quot;JPYEUR&amp;quot;,&amp;quot;JPYGBP&amp;quot;,&amp;quot;JPYUSD&amp;quot;,&amp;quot;USDCHF&amp;quot;,&amp;quot;USDEUR&amp;quot;,&amp;quot;USDGBP&amp;quot;,&amp;quot;USDJPY&amp;quot;
        ]
    );
</script>

我还尝试将每个元素包装在单引号或双引号 HTML 代码中,但仍然会通过 Play 模板返回垃圾:

@CcyPair.values.map("&#39;%s&#39;".format(_)).mkString(",")

【问题讨论】:

    标签: angularjs scala playframework


    【解决方案1】:

    OK 在Play Template documentation 中找到了解决方案。解决方案是将代码包装在 @Html(_) 中以防止 Twirl 自动转义,而是按原样使用原始输出。因此,完整的解决方案是:

    <script>
        angular.module("backTestDemoApp").value("ccyPairs",
            [
                @Html(CcyPair.values.map("'%s'".format(_)).mkString(","))
            ]
        );
    </script>
    

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多