javascript - Hur får man en brytpunkt att fungera inom TypeScript-fetpilfunktion i ett promise-resultat?


Så, jag har en väldigt enkel Angular-kontroller. Jag ser en oenighet mellan Chrome-debuggern och konsolen inom en fat arrow-funktion som en promise-resolver. Om jag sätter en brytpunkt i hanteraren kan källinspektören inte definiera this.scope... men att logga det fungerar fint. Är det något asynkront som händer här som jag inte förstår, eller är det en bugg med scope för fat arrow ()=>{}-funktion inom en promise-resolver-funktion?

Eller kanske, finns det en bugg med Chrome och TS + fat arrow i allmänhet och hur det fungerar med .js.map i vissa fall?

Också, om jag manuellt öppnar .js-filen och hovrar medan körningen fortfarande är pausad, kan jag hovra över _this.scope och resultatet är korrekt.

Det verkar som att det begränsas till fönstret för brytpunkten, men kodexekveringen fungerar normalt.

class DetailController {
  scope:any;
  userModel:UserModel;

  static $inject = ['$scope','$window', 'productModel','sessionModel','userModel', '$routeParams', '$location'];
  constructor( $scope,userModel) {

    this.scope = $scope;
    this.userModel = userModel;
    this.scope.products = null;

    //if I breakpoint here, this.scope is defined

    this.userModel.getCurrentUser().then(()=> {

      this.scope.foo = 'bar';

      // if I log scope, it is defined and correct
      console.log('scope',this.scope);

      //if I breakpoint here, this.scope is undefined (hovering it says undefined)

      // etc...
      var products = this.userModel.getProducts();
      if( products.length ){
        console.log( 'prods ', this.scope );
        this.scope.products = products;
        this.scope.product = this.scope.products[0];
      }

    });
  }

  testLambda = () => {
      console.log( 'test:', this.scope ); //works
      this.scope;
      // breakpoint here fails to have proper this reference. 

  }

}

angular.module('App').controller('detailController', DetailController );

uppdatering: Jag lade till en test-lambda