2017-01-23 6 views
0

seit ich von JavaScript zu TypeScript (Version 2.1.5) überging, funktioniert der folgende Code, der die Datumsauswahl filtert nicht mehr. Und ich denke ich weiß warum, aber ich habe in diesem Moment keine gute Lösung gefunden.Typescript + Angular: Variablen ändernden Kontext

Hier sind meine zwei Datum-Picker: Von und Bis:

       <div class="form-group"> 
           <label class="label label-letter-spacing">From </label> 
           <div class='input-group date' id='datepickerFrom'> 
            <md-datepicker ng-model="vm.dateFrom"></md-datepicker> 
           </div> 
          </div> 
          <div class="form-group"> 
           <label class="label label-letter-spacing">To </label> 
           <div class='input-group date' id='datepickerTo'> 
            <md-datepicker ng-model="vm.dateTo" md-date-filter="vm.onlyGreaterThanFromDate" ></md-datepicker> 
           </div> 
          </div> 

In den Controller.ts ich habe:

 dateTo: Date; 
     dateFrom: Date; 

     onlyGreaterThanFromDate(date) { 
      if (this.dateFrom != undefined) 
       return (date.getTime() > this.dateFrom.getTime()); 
     }; 

Während des Debuggens in Browser (Chrom), bemerkte ich, dass, wenn Diese Methode wird ausgeführt, der Kontext hat sich geändert und dieser stellt nicht mehr meinen Controller, sondern die CalendarCtrl dar, und so ist die this.dateFrom nicht definiert.

Ich habe versucht, einige Einstellungen als dateFrom Eigenschaft in statischen oder privaten setzen, funktioniert aber auch nicht.

Ich bin immer noch auf der Suche und ich freue mich auf Ihre Kommentare/Ideen zu diesem Thema. :) Danke

+0

Können Sie bitte die gesamte ts-Code-Datei anzeigen? Es klingt wie ein Scoping-Problem von dem, was Sie über den sich ändernden Kontext dieser Variable beschreiben. – mindparse

+2

In Typescript können Sie die Pfeilfunktion verwenden, um den Kontext zu erhalten. Etwas wie: 'onlyGreaterThanFromDate = (Datum) => { if (this.dateFrom! = Undefined) Rückgabe (date.getTime()> this.dateFrom.getTime()); }; ' –

Antwort

1

Vielen Dank Hung Cao für Ihre Antwort. Das war der richtige Code und ich lernte eine nützliche Funktion in Typoskript :)

Also die Lösung, die ich bin neu verfasst:

In Typoskript können Sie Pfeil-Funktion verwenden, den Kontext zu bewahren. So etwas wie: onlyGreaterThanFromDate = (Datum) => {wenn (this.dateFrom! = Undefined) return (date.getTime()> this.dateFrom.getTime()); };