Ich dachte, dass die Pfeilfunktion "nur" eine Abkürzung für anonyme Funktionen ist, also habe ich sie ziemlich oft benutzt. Vor kurzem stieß ich jedoch auf ein Beispiel, dass die Pfeilfunktion einige Probleme verursachte. Hier ist ein Beispielcode:ES6, Pfeilfunktion, Kontext "dieser"
function refreshTable() {
$.ajax({
url: root + `/posts?userId=${userId}`,
method: 'GET'
}).then(function(data) {
for (var item of data) {
$('table.list tbody').append(`
<tr>
<td>${item.id}</td>
<td>${item.title}</td>
<td>${item.date}</td>
<td>
<a href="" data-id="${item.id}" class="getDetails">View</a> |
<a href="" data-id="${item.id}" class="getDetails">Delete</a>
</td>
</tr>
`);
}
$('.getDetails').click((e) => {
// $(this) is actually the ajax call, I can't access the "data" part
});
});
}
Dies funktioniert jedoch:
function refreshTable() {
$.ajax({
url: root + `/posts?userId=${userId}`,
method: 'GET'
}).then(function(data) {
for (var item of data) {
$('table.list tbody').append(`
<tr>
<td>${item.id}</td>
<td>${item.title}</td>
<td>${item.date}</td>
<td>
<a href="" data-id="${item.id}" class="getDetails">View</a> |
<a href="" data-id="${item.id}" class="getDetails">Delete</a>
</td>
</tr>
`);
}
$('.getDetails').click(function(e) {
// $(this) is the HTML element, so I can access "data"
});
});
}
Offensichtlich gibt es einige logische Funktionen Pfeil, erstellt es einen anderen Rahmen für this
. So was ist los? Kann ich dasselbe mit einer Pfeilfunktion erreichen (um auf HTML zuzugreifen) oder ist das in diesem Fall nicht möglich?
Danke!
Mögliche Duplikat [Pfeil-Funktionen und diese] (http://stackoverflow.com/questions/28798330/arrow-functions- und-this) –
Mögliches Duplikat von [Was bedeutet "=>" (ein Pfeil aus equals & größer als) in JavaScript?] (http://stackoverflow.com/questions/24900875/whats-the-meaning- von einer Pfeilform Ed-von-gleich-größer-als-in-javas) –
Jemand hat einen schlechten Tag? Gute Antworten ablehnen, ohne einen Kommentar zu hinterlassen.Wenn dies strategische Downvotes sind ... nun, wenn es dir so viel bedeutet :) – Michelangelo