2012-11-17 8 views
15

Mam tego kodu wynikowego:Jak uzyskać dostęp do członka klasy z funkcji w klasie metody w maszynopisie

module MyPage { 

    export class MyVm { 

     ToDo : string; 

     Load() { 
      //can access todo here by using this: 
      this.ToDo = "test"; 

      $.get("GetUrl", function (servertodos) { 
       //but how do I get to Todo here?? 
       this.ToDo(servertodos); //WRONG ToDo.. 
      }); 
     } 
    } 
} 

Pytanie jest, w jaki sposób mogę uzyskać dostęp do pola członek todo w $ .get wywołania zwrotnego?

Odpowiedz

22

maszynopis obsługuje również funkcję strzałki że zachowania leksykalny scopingu. Funkcje strzałek spowodować kodu podobnego do przykładu Jakuba ale są neater jak nie trzeba utworzyć zmienną i dostosować Składnia siebie:

Oto przykład przy użyciu funkcji strzałka:

$.get("GetUrl", (todos) => { 
    this.ToDo(todos); 
}); 
+2

Zgadzam się, to jest przyjemniejsze – Flores

+3

To jedna z moich ulubionych rzeczy na temat maszynopisu. – Maverick

+0

Może to być o wiele bardziej jasne, jeśli w tym przykładzie użyto również "danych" –

8

W ten sam sposób to zrobić w javascript

export class MyVm { 
    ToDo : string; 

    Load() { 
     //can access todo here by using this: 
     this.ToDo = "test"; 
     var me = this; 

     $.get("GetUrl", function (todos) { 
      //but how do I get to Todo here?? 
      me.ToDo(todos); //WRONG ToDo.. 
     }); 
    } 
} 
+1

Aha .. Mój brak umiejętności obsługi javascript – Flores

+3

Chociaż jest to technicznie poprawne, używanie funkcji ze strzałkami jest lepszym sposobem na zrobienie tego. –

+0

Ta technika działa dla innych podobnych scenariuszy. Był dla mnie wskazówką we właściwym kierunku. – HockeyJ

Powiązane problemy