javascript - 我如何将参数从 scala 传递给 javascript 元素?

标签 javascript scala playframework raphael morris.js

我需要为 javascript 元素提供来自 Map 的值,如下所示。

我的渲染为 HTML 文档提供了:

@(morrisDonut: Map[String, Integer])

JS 看起来像这样:

$.getScript('https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js',function(){
$.getScript('https://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js',function(){

var donutData = [];
@for((activity, steps) <- morrisDonut) {
    donutData.push({label: activity, value: steps});
}

Morris.Donut({
    element: 'user_activity-donut',
    data: donutData
});
});
});

脚本停止,因为它找不到/不能使用事件和步骤,即使其类型正确。

解决方案:

donutData.push({label: '@activity', value: @steps});

添加“'”和“@”符号似乎工作得很好

最佳答案

根据你的语法,我认为(我在这里推断了很多)你正在使用 Play Framework - 即 Twirl templates .如果是这种情况,那么您只是在加载 donutData 数组的关键点缺少一些遵从运算符 (@):

@for((activity, steps) <- morrisDonut) {
  donutData.push({label: @activity, value: @steps});
}

将 Twirl 指令与另一种语言混合使用可能会很棘手,因为根据设计,没有明确的“这是我的 Twirl 代码的结尾”标记 - 一切都是推断出来的。因此,在您的情况下,Twirl 正确解释了第一行和第三行,但第二行似乎只是一些静态内容 - 将按原样插入。

通过添加神奇的 @ 符号,可以检测到必要的替换。

关于javascript - 我如何将参数从 scala 传递给 javascript 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203088/

相关文章:

java - Play Framework : Form data not passed

jax-ws - 从服务器调用 JAX WS Web 服务,无需 http 或 servlet

javascript - 使用 D3.js 和 TUIO 的触摸事件

javascript - 正在调用 Bootstrap Switch JS,但什么都不做

list - 反向列表 Scala

scala - 类型别名优化在 Scala 中跳过隐式转换?

scala - 您如何通过 Play Framework 中的 Websockets 将数据从 Kafka 流发送到客户端?

javascript - Ajax文件上传

javascript - onLoad 不适用于元素

斯卡拉玩 `Enumerators` : push or pull?