Я застрял с этим. Я работаю с nodejs, шаблонами руля и mongoDB. В шаблоне руля я пытаюсь установить параметры для выбора, когда изменяется значение другого выбора. Мой первый выбор работает нормально, поэтому я выбираю из него значение, чтобы запустить сценарий для установки параметров во втором выборе. То, что я пытаюсь сделать, это получить переданный {{project_in_query}} в моем коде javascript и создать список проектов, связанных с выбранным пользователем ранее. Я пытался в течение нескольких дней, но все еще не могу получить его.
вот мой код.
file.js
router.get('/upload_images', checkAuthentication, async (req, res) =>{
const users_in_query = await Users.find({role: 'user'}).sort({date: 'desc'});
const projects_in_query = await Projects.find({}).sort({date: 'desc'});
res.render("images/upload_Img.hbs", {users_in_query, projects_in_quey});
}
template.hbs
<select name="user" id="user_list" onchange="setproject()" placeholder="User">
{{#each users_in_query}}
<option value="{{username}}">{{username}}</option>
{{/each}}
</select>
<select name="project_name" id="project_list" onchange="" placeholder="Pick a project">
<option value="value">Projects goes here</option>
// I want to use projects_in_query (passed from file.js) to fill this options, similar to
previous select
</select>
<script>
function setproject() {
var e = document.getElementById("user_list"); //set a variable for first select
var user_chosen = e.options[e.selectedIndex].text; // catch the user chosen
// then loop into **projects_in_query** in order to add options for
*user_chosen* into **project_list**
Maybe like this... obviously it doesn´t works at all //
pl_select = document.getElementById('project_list');
for each(p in {{projects_in_query}}) {
if(user_chosen == p.user_in_project){
var opt = document.createElement('option');
opt.value = p.project_name;
opt.innerHTML = p.project_name;
pl_select.appendChild(opt);
}
}
</script>
Надеюсь, что поможет с этим, я буду очень благодарен