Я пытаюсь преобразовать код из swig в ejs, но столкнулся с проблемой с циклом «для».nodejs foreach swig и ejs
Проблема заключается в том, что цикл внутри файла swig выполняется циклически через содержимое файла config.json. Однако, когда я пытаюсь реализовать аналогичный код в ejs, я не могу заставить его работать и нуждаться в некоторых рекомендациях.
У меня есть файл config.json я зацикливание корыта:
{
"server" : {
"port" : 3000,
"ssl" : false,
"ssl_cert" : "/home/pi/lirc_web/server.cert",
"ssl_key" : "/home/pi/lirc_web/server.key",
"ssl_port" : 3001
},
"repeaters": {
"lg": {
"KEY_VOLUMEUP": true,
"KEY_VOLUMEDOWN": true
}
},
"macros": {
"TESTTV": [
[ "lg", "KEY_VOLUMEUP" ],
[ "lg", "KEY_VOLUMEUP" ],
[ "lg", "KEY_VOLUMEDOWN" ]
]
},
"commandLabels": {
"lg": {
"KEY_VOLUMEUP": "Volume Up",
"KEY_VOLUMEDOWN": "Volume Down"
}
},
"remoteLabels": {
"lg": "LG TV"
},
"blacklists": {
}
}
route.js файл содержит (фрагмент кода):
config = require('../config.json');
app.get('/profile', isLoggedIn, function(req, res)
{
app.get('/remotes.json', function (req, res) {
res.json(refineRemotes(lircNode.remotes));
});
var refinedRemotes = refineRemotes(lircNode.remotes);
res.render('remotes.ejs', {
macros: macrostwo,
remotes: refinedRemotes,
macros: config.macros,
repeaters: config.repeaters,
labelForRemote: labelFor.remote,
labelForCommand: labelFor.command,
});
console.log('DEBUG: ConfigFile Macros: \n', macrostwo);
});
файла SWIG, который работает содержит :
<ul class="macros-nav">
{% for macro in macros %}
{% set macroName = loop.key %}
<li><button class="btn btn-wide btn-large btn-warning macro-link" href="/macros/{{ macroName|url_encode }}">{{ macroName }}</button></li>
{% endfor %}
</ul>
EJS файл им работать на есть ниже код:
<ul class="macros-nav">
<% macros.forEach(function(macro){ %>
<li><button class="btn btn-wide btn-large btn-warning macro-link" href="/macros/<%=macro.name%>"> <%=macro.name%> </button></li>
<% }) %>
</ul>
Если я изменить свой файл routes.js, чтобы передать ниже код для EJS просмотра цикла Еогеасп правильно работает
var macrostwo = [
{ name: 'Nathan Explosion', message: 'Dethklok rules' },
{ name: 'William Murderface', message: 'Bass is the heart of the band' },
{ name: 'Dr. Rockso', message: 'Where is my friend Toki?' }
];
app.get('/profile', isLoggedIn, function(req, res)
{
app.get('/remotes.json', function (req, res) {
res.json(refineRemotes(lircNode.remotes));
});
var refinedRemotes = refineRemotes(lircNode.remotes);
res.render('remotes.ejs', {
macros: macrostwo,
remotes: refinedRemotes,
macros: macrostwo, //config.macros,
repeaters: config.repeaters,
labelForRemote: labelFor.remote,
labelForCommand: labelFor.command,
});
console.log('DEBUG: ConfigFile Macros: \n', macrostwo);
});
EDIT1:
Я пытался получить он объект .keys, но я просто получаю «1» при печати на консоль. Я знаю, что я использую macros.name в файле ejs, который является «не», существующим в config.json. Проблема в том, что я не знаю, как получить имена ключей при циклическом прогибе.
/Thomas