VueJS: Warum ist "das" undefiniert?

10

Ich erstelle eine Komponente mit Vue.js .

Wenn ich this in einem der Lebenszyklus-Hooks referenziere ( created , mounted , updated , usw.) wird als undefined ausgewertet:

%Vor%

Das Gleiche passiert auch in meinen berechneten Eigenschaften:

%Vor%

Ich erhalte den folgenden Fehler:

  

Uncaught TypeError: Kann Eigenschaft 'bar' von undefined

nicht lesen

Warum bewertet this in diesen Fällen auf undefined ?

    
thanksd 12.05.2017, 05:05
quelle

1 Antwort

32

Beide Beispiele verwenden eine Pfeilfunktion () => { } , die this an einen anderen Kontext als die Vue-Instanz bindet.

Gemäß der Dokumentation :

  

Verwenden Sie keine Pfeilfunktionen für eine Exemplareigenschaft oder einen Rückruf (z. B. vm.$watch('a', newVal => this.myMethod()) ). Da Pfeilfunktionen an den übergeordneten Kontext gebunden sind, ist this nicht wie erwartet die Vue-Instanz und this.myMethod ist nicht definiert.

Um den richtigen Verweis auf this als Vue-Instanz zu erhalten, verwenden Sie eine reguläre Funktion:

%Vor%

Alternativ können Sie auch die ECMAScript 5-Kurzschrift verwenden eine Funktion:

%Vor%     
thanksd 12.05.2017, 05:05
quelle

Tags und Links