#handlebars.js
#handlebars.js
Вопрос:
Я новичок в Handlebars.js . Я использую каждую из них для отображения некоторой учетной записи.Мне нужно получить информацию о конкретном пользователе, нажимающем кнопку. Я буду более конкретен с кодом.
{{#each accounts}}
<div class="form-group">
<p>{{@index}}</p>
<label for="name" value={{username}}>{{username}}</label>
</div>
<div class="form-group">
<label for="name">{{email}}</label>
</div>
<button id="myButton">chat</button>
{{else}}
<p>No account</p>
{{/each}}
<script>
const button = document.getElementById('myButton');
button.addEventListener('click', function(e) {
console.log('button was clicked');
const number = document.querySelector("p");
console.log(number);
});
</script>
Если я нажму первую кнопку списка, я смогу получить доступ к данным, однако, если я попытаюсь нажать другие кнопки списка, я не смогу получить доступ к информации.
Например, если я нажму 3-ю кнопку, я хотел бы получить информацию о руле 3-й учетной записи.
Ответ №1:
У вас в цикле есть id =»MyButton». Идентификаторы должны быть уникальными, и с вашим кодом вы получите столько кнопок с id = «MyButton», сколько у вас учетных записей. Попробуйте вместо этого добавить класс, если вы хотите добавить свое событие для всех кнопок.
{{#each accounts}}
<div class="form-group">
<p>{{@index}}</p>
<label for="name" value={{username}}>{{username}}</label>
</div>
<div class="form-group">
<label for="name">{{email}}</label>
</div>
<button id="myButton{{@index}}" class="myButton">chat</button>
{{else}}
<p>No account</p>
{{/each}}
<script>
const buttons = document.getElementsByClassName('myButton');
buttons.addEventListener('click', function(e) {
console.log('button was clicked');
const number = document.querySelector("p");
console.log(number);
});
</script>
Комментарии:
1. Спасибо за ответ. Что вы подразумеваете под созданием класса MyButton?
2. чтобы добавить class=»MyButton» к кнопке вместо id = «MyButton», а также вы должны сделать идентификатор уникальным, добавив (например) индекс цикла id=»MyButton{{@index}}»
3. Спасибо за ваши ответы. Я решил проблему. У меня есть к вам еще один вопрос. Как я могу получить доступ в handlebar к определенному элементу массива, созданного с помощью каждого (Accounts[0]. Имя, учетные записи [1]. фамилия и т.д.)?
4. Вы имеете в виду {{accounts.0.name }} и {{учетныезаписи.0.фамилия}} ?