У меня есть цикл, который помещает данные в массив, поэтому я могу заполнять карты данными из базы данных. Я пытаюсь просто вернуть pushId соответствующей карты при нажатии кнопки. Я могу отобразить информацию, которую хочу, но я получаю доступ к относительному pushId в функции.
export class EventListPage {
public eventList: Array < any > ;
keys: any[];
constructor(
public navCtrl: NavController,
public eventProvider: EventProvider
) {}
ionViewDidLoad() {
this.eventProvider.getEventList().on("value", eventListSnapshot => {
this.eventList = [];
eventListSnapshot.forEach(snap => {
this.eventList.push({
id: snap.key,
name: snap.val().name
});
}
upvote() {
//problem area - looking to return the "id" of the clicked button. I dont know how many records there will be.
console.log(this.eventList.id); //obviously doesnt work
console.log(this.eventList[1].id); //returns an id but its not relative to the button clicked obviously..
{
goToEventDetail(eventId: string): void {
this.navCtrl.push('EventDetailPage', {
eventId: eventId
});
}
}
Html:
<ion-content padding>
<ion-list>
<ion-item *ngFor="let event of eventList">
<h2>{{event?.name}}</h2>
<p>id: <strong>{{event.id}}</strong></p>
<button shape="round" color="primary" expand="block" (click)="upvote()">Upvote</button>
</ion-item>
</ion-list>
</ion-content>
было бы лучше переместить функцию upvote () в функцию ionViewDidLoad () и получить к ней доступ как к вложенной функции (что я не знаю, как это сделать), или попытаться выдвинуть идентификатор с карты, на которую нажали в переменную и использовать ее в функции upvote без вложенности?
Любая помощь будет высоко ценится.
Заранее спасибо!