2013-03-06 2 views
0

typecript 클래스의 생성자에있는 ID에 change 이벤트를 추가하고 해당 change 이벤트 내에서 클래스 함수에 액세스하려고합니다. 그러나 'this'는 이벤트 내부 클래스가 아닌 것처럼 보입니다. 거기에서 함수에 어떻게 액세스합니까?컨스트럭터의 이벤트 내부에서 클래스 함수에 액세스하려면 어떻게해야합니까?

export class Document_Uploads { 

     constructor() { 
      $("#FormBrokerReferenceID").change(function() { 
       = $("#FormBrokerReferenceID").val(); 

       //inside this event it does not work   
       this.Validate() 

      }); 

      // works here inside constructor 
      this.Validate() 

     } 

    Validate() { 
      var valid: bool = true; 
      some other code 
    } 


} 
+0

문제는 그러므로 http://stackoverflow.com/questions/13683305/the-this-keyword-in-typescript-is-it-a-의 중복 this' '의 범위에 대해 정말이며, bug/13683593 # 13683593 (확실히 받아 들여진 대답이 도움이 될 것입니다 - 열쇠는 굵은 화살표 기능을 사용하는 것입니다). 중복을 피하기 위해 VTC. – JcFx

답변

4

두 가지 해결책이 있습니다. 이 수동으로 타이프 라이터가 당신을 위해 무엇을 할 것이라고하고 있지만,

constructor() { 
     $("#FormBrokerReferenceID").change(() => { 
      = $("#FormBrokerReferenceID").val(); 

      // Should now work...   
      this.Validate() 

     }); 

     // works here inside constructor 
     this.Validate() 
    } 

두 번째는 직접 처리하는 것입니다 - 그것은됩니다 그것을 것을 알고 가치 :

첫 번째 타이프 라이터는 당신을위한 범위를 처리 할 얻을 것입니다 마술이 아닙니다. 이벤트에서 this의 의미를 덮어 쓰지 않고 "외부"액세스 권한을 원할 때 유용 할 수 있습니다.

constructor() { 
     var self = this; 

     $("#FormBrokerReferenceID").change(function() { 
      = $("#FormBrokerReferenceID").val(); 

      // Should now work...   
      self.Validate() 

     }); 

     // works here inside constructor 
     this.Validate() 
    } 
관련 문제