2012-11-17 16 views
15

ho questo codice dattiloscritto:Come accedere membro della classe di funzione nella classe di metodo a macchina

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.. 
      }); 
     } 
    } 
} 

La domanda è: come faccio a accedere al campo membro todo nel $ .get richiamata?

risposta

22

dattiloscritto supporta anche la funzione di freccia che conservano scoping lessicale. funzioni Freccia risultato in codice simile all'esempio di Jakub ma sono più ordinato come non c'è bisogno di creare la variabile e regolare utilizzo da soli:

Ecco l'esempio utilizzando una funzione di freccia:

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

D'accordo, questo è più bello – Flores

+3

Questa è una delle cose che preferisco di Typescript. – Maverick

+0

Questo potrebbe essere molto più chiaro se in questo esempio è stato usato anche 'data' –

8

Allo stesso modo lo si fa in 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 .. il mio mancanza di abilità javascript – Flores

+3

Sebbene ciò sia tecnicamente corretto, usare le funzioni freccia è il modo migliore per farlo. –

+0

Questa tecnica funziona per altri scenari simili. Era un puntatore nella giusta direzione per me. – HockeyJ

Problemi correlati