我如何将参数传递给 Scala 中的 javascript 元素?
How do i pass arguments to a javascript element from scala?
我需要为 javascript 元素提供来自地图的值,如下所示。
我的渲染为 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
});
});
});
脚本停止,因为它不能find/can不能使用activity和步骤,即使它的类型正确。
解决方案:
donutData.push({label: '@activity', value: @steps});
添加“'”和“@”符号似乎效果很好
根据你的语法,我认为(我在这里推断了很多)你正在使用 Play Framework - 即 Twirl templates。如果是这种情况,那么您只是在加载 donutData
数组的关键点缺少一些遵从运算符 (@
):
@for((activity, steps) <- morrisDonut) {
donutData.push({label: @activity, value: @steps});
}
将 Twirl 指令与另一种语言混合使用可能会很棘手,因为根据设计,没有明确的 "this is the end of my Twirl code" 标记 - 都是推断出来的。因此,在您的情况下,Twirl 正确解释了第一行和第三行,但第二行似乎只是一些静态内容 - 将按原样插入。
通过添加神奇的 @
符号,可以检测到必要的替换。
我需要为 javascript 元素提供来自地图的值,如下所示。
我的渲染为 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
});
});
});
脚本停止,因为它不能find/can不能使用activity和步骤,即使它的类型正确。
解决方案:
donutData.push({label: '@activity', value: @steps});
添加“'”和“@”符号似乎效果很好
根据你的语法,我认为(我在这里推断了很多)你正在使用 Play Framework - 即 Twirl templates。如果是这种情况,那么您只是在加载 donutData
数组的关键点缺少一些遵从运算符 (@
):
@for((activity, steps) <- morrisDonut) {
donutData.push({label: @activity, value: @steps});
}
将 Twirl 指令与另一种语言混合使用可能会很棘手,因为根据设计,没有明确的 "this is the end of my Twirl code" 标记 - 都是推断出来的。因此,在您的情况下,Twirl 正确解释了第一行和第三行,但第二行似乎只是一些静态内容 - 将按原样插入。
通过添加神奇的 @
符号,可以检测到必要的替换。