Хорошо, это должен быть простой вопрос на узле.
Используя express, есть один документ под названием app.js, еще один index.jade, еще один index.js и, как правило, другой javascript, скажем server.js, где основная часть работы для сервера выполнена (код здесь может быть внутри app.js, но пусть говорят, что это разные файлы).
Скажем, у меня есть два объекта, подобные этим
myIDs = ['afoo', 'abar'];
myArray = ['foo', 'bar'];
в server.js, и я хотел бы перебирать их элементы в jade и создавать кнопки, которые имеют значение foo и bar соответственно, а их идентификаторы - afoo и abar соответственно. Как мы можем это сделать?
Более того, можно ли реализовать, если щелчок мыши происходит на одной из этих кнопок? Я попытался дать имя определенной кнопке, которую я создал динамически, используя что-то вроде этого
html = "<button id=\"aUniqueID\">Press me!</button>"
document.getElementById('puff').innerHTML = html;
но, даже если он появляется в браузере, ничего не происходит, когда нажимается кнопка (я отправляю сообщение на сервер, и сервер должен печатать консольный журнал).
Любая помощь будет оценена по достоинству.
Я рекомендую вам не использовать встроенную функцию, и я бы добавил событие click на стороне клиента, но вы можете добавить его в строку, как обычно, с нефритом
Это предполагает, что значение и идентификатор для каждой кнопки находятся в одной позиции:
myIDs = ['afoo', 'abar'];
myArray = ['foo', 'bar'];
each button_id, i in myIDs
button(id="#{button_id}", onclick="yourFunctionHere();") #{myArray[i]}
ОБНОВЛЕНО:
Передача массивов на страницу.jade выглядит так:
app.get('/your-url-path', function(req, res){
var my_ids_array = ['afoo', 'abar'];
var my_values_array = ['foo', 'bar'];
res.render('your-jade-page', { myIDs: my_ids_array, myArray: my_values_array });
});