var = #{message}在我的例子中使用我得到undefined local variable or method message- message = 'it works'上述:javascript一切工作正常我想在里面运行迭代 .请参阅最后一个代码示例,了解我在最终的javascript代码中需要什么.在哪里我需要循环一些ruby变量(或散列哈希的散列?)来获得这个.数据(='基础')可以有很少的元素.它可以有少数元素的孩子等..each:javascript
这个haml代码
%html
%head
:javascript
$(document).ready(function() {
- message = 'it works'
var = message
});
%body
- message2 = 'hi'
= message2
%div{:id =>"jstree"}
Run Code Online (Sandbox Code Playgroud)
给了我这个HTML代码
<html>
<head>
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function() {
- message = 'hi'
var = message
});
//]]>
</script>
</head>
<body>
hi
<div id='jstree'></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想用haml生成的最终javascript代码是javascript变量
var data = [{
data: "basics",
attr: {},
children: [
{data: "login", attr: {run: "run"},
children: [
{data: "login", attr: {}}
]
} ,
{data: "Academic Year", attr: {run: "run"},
children: [
{data: "login", attr: {}},
{data: "Academic Year", attr: {filter: "mini", SOF: "yes"}}
]
}
]
}];
Run Code Online (Sandbox Code Playgroud)
Phr*_*ogz 29
首先,让我们回顾一下您似乎知道的内容:
- ....#{...}标记在过滤器中插入Ruby代码.你说你想跑each,但可能你想要输出; 因为结果#{...}变成了一个字符串并放入你的代码中,你真正想要的(可能)是map:
%html
%head
:javascript
var foo = [];
#{
limit = rand(4)+3
array = (0..limit).to_a
array.map{ |i| "foo[#{i}] = #{rand(12)};" }.join ' '
}
console.log(foo.length);
%body
Run Code Online (Sandbox Code Playgroud)
运行上面的代码给出了这个输出:
<html>
<head>
<script type='text/javascript'>
//<![CDATA[
var foo = [];
foo[0] = 2; foo[1] = 0; foo[2] = 11; foo[3] = 8; foo[4] = 0; foo[5] = 1;
//]]>
</script>
<body></body>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
如您所见,#{...}大块(可能跨越多行)运行任意Ruby代码.最后一个表达式(在本例中为map{...}.join)的结果将转换为字符串并放在输出中.
| 归档时间: |
|
| 查看次数: |
12226 次 |
| 最近记录: |