node.jsでサーバー側の HTML を作成するのに役立つと思われる Jed Schmidt のdomoを発見しました。
forEach()
基本的なものは機能しますが、配列のようなループを使用してテーブルの行などを作成する方法がわかりません。基本的な例を作成しました:
var domo = require('domo');
var fruits = [];
fruits.push("banana", "apple", "peach");
var document = DOCUMENT({type: "html"},
HTML(
HEAD(
TITLE("bla"),
SCRIPT({src: "/script.js"})
),
BODY(
TABLE(
THEAD( TR( TD("Predicate"), TD("Object"))),
TBODY(
fruits.forEach(function(value, index) {
console.log("I am in forEach");
console.log("Value: "+value);
console.log("Key: "+index);
TR(
TD(index),
TD(value)
)
})
)
)
)
)).outerHTML;
console.log(document);
これにより、現在、次の出力が得られます。
<!DOCTYPE html>
<html>
<head>
<title>
bla
</title>
<script src="/script.js" type="text/javascript">
</script>
</head>
<body>
<table>
<thead>
<tr>
<td>
Predicate
</td>
<td>
Object
</td>
</tr>
</thead>
<tbody>
<!--undefined-->
</tbody>
</table>
</body>
</html>
これが正しく取得された場合、forEach ループ内で domo のスコープにアクセスできません。これは正しい解釈ですか?それを行うための正しい作業方法は何ですか?
解決策:
Bergi からのヒントと Jed Schmidt による修正のおかげで、このフラグメントが機能するようになりました (domo >=0.5.5):
TBODY( fruits.map(function(value, index) {
return TR(
TD(String(index)),
TD(value)
);
}))
)