Mam następujący kod wewnątrz dyrektywy kątowej, chciałem uzyskać dostęp do zmiennej poziomu klasy w funkcji wywołania zwrotnego, więc użyłem funkcji strzałki, ale „this” nadal nie wskazuje dyrektywy.

this.itemRects.selectAll('rect')
            .data(this.visItems, (d) => {
                return d.id + this.x;
            })

Dodałem debugger w instrukcji returntu wpisz opis obrazu w debugerze pokazuje to, wskazując tablicę danych.

Jak mogę uzyskać dostęp do funkcji wywołania zwrotnego na poziomie dyrektywy „this”?

0
arshid dar 20 listopad 2019, 20:48
Czy kod znajduje się w innej funkcji strzałki? Możesz spróbować zrobić let self = this; a następnie użyj self zamiast tego.
 – 
Ricky Stam
20 listopad 2019, 20:58
Kod znajduje się wewnątrz funkcji na poziomie klasy
 – 
arshid dar
20 listopad 2019, 21:00

1 odpowiedź

W funkcji callback odnosi się to do obiektu funkcji callback. możesz zadeklarować zmienną poza funkcją zwrotną w następujący sposób:

var self = this;

I uzyskaj dostęp do zmiennych klas w funkcji wywołania zwrotnego za pomocą self, zamiast tego.

Sprawdź poniższy link, aby powiązać zmienne klasy w funkcji oddzwaniania za pomocą symbolu strzałki: Jak używać funkcji strzałek (publicznych pól klas) jako metod klasowych?

Próbować:

this.itemRects.selectAll('rect')
            .data(this.visItems, (d,x) => {
                return d.id + x;
            })
2
Vipul 20 listopad 2019, 21:03
Używam funkcji strzałkowych, czy nie powinienem mieć dostępu do „tego” bez użycia zmiennej?
 – 
arshid dar
20 listopad 2019, 20:58