2016-11-10 9 views
1

Wenn ich bekomme mein Socket-Ereignis drawMouse & meine draw() Funktion heißt myVar ist undefiniert. Warum kann ich nicht über den Callback von socket.on auf this.myVar zugreifen?Warum ist myVar undefiniert?

import { Component, OnInit } from '@angular/core'; 

import * as io from 'socket.io-client'; 


@Component({ 
    selector: 'app-test', 
    templateUrl: './test.component.html', 
    styleUrls: ['./test.component.css'] 
}) 
export class TestComponent implements OnInit { 
    myVar:string; 

    constructor(){ 
    this.socket = io("http://localhost:4300"); 
    this.myVar = "hello" 

    } 

    ngOnInit() { 
     this.socket.on('drawMouse', function(data){ 
      this.draw(data) 
     }) 
    } 

    draw(){ 
    //this variable is undefined 
    console.log(this.myVar); 
    } 
} 
+2

Sind Sie sicher, dass 'draw' tatsächlich genannt wird? Das scheint unwahrscheinlich. –

+0

Höchstwahrscheinlich ein Duplikat von [Wie man auf den richtigen 'this/Kontext innerhalb eines Callbacks zugreifen kann?] (Http://stackoverflow.com/q/20279484/218196) –

Antwort

3

Da this Inneren der Buchse Rückruf wird beziehe nicht an die Komponente.

Versuchen:

this.socket.on('drawMouse', (data)=>{ 
      this.draw(data) 
     }) 
+1

Aber das OP scheint zu sagen, dass die' draw'-Funktion heißt .... –

+0

@FelixKling oh das habe ich nicht realisiert und wie so? : D – echonax

+0

Keine Ahnung;) Vielleicht fehlinterpretiere ich den Text. –