2013-05-12 1 views
0

click 이벤트 내에서 typescript 클래스 인스턴스를 가져올 수 없습니다.Kinetic.js 클릭 이벤트에서 클래스에 액세스하는 방법

저는 TypeScript 클래스 Navigation입니다.

Navigation.prototype.wireMouseEvents = function() { 
    var _this = this; 
    this.buttonPrevious.on("click", function() { 
     if(_this.currentPage > 1) { 
      // do more work with Navigation objects 

     } 
    }); 
}; 

이벤트 해고 되나 currentPage이 정의되지 :

class Navigation 
{ 
    currentPage: number; 

    wireMouseEvents() 
    { 
     this.buttonPrevious.on("click", function(): void { 
      if (this.currentPage > 1) 
      { 
       // do more work with Navigation objects 
      } 
     }); 
    } 
} 

는 그리고이 결과 자바 스크립트입니다. 디버거의 click 이벤트에서 "this"를 볼 때 Kinetic.Text 개체입니다.

클릭 핸들러의 범위가 내 클래스 Navigation인지 어떻게 확인할 수 있습니까?

+1

결과 JavaScript를 붙여 넣을 수 있습니까? – thomaux

+0

Navigation.prototype.wireMouseEvents = function() { var _this = this; this.buttonPrevious.on ("click", function() { if (_this.currentPage> 1) {} }); – mrs99mrs99

+0

감사합니다. 답변이 아니기 때문에 답을 표시했습니다. :). 나는 당신에게 대답 할 수있을 지 모르겠지만 적어도 지금은 훨씬 더 분명합니다. – thomaux

답변

0

게시 한 Typescript가 게시 한 JavaScript로 컴파일되지 않습니다. this.buttonPrevious.on("click", function(): void { 등은 어휘 범위를 유지하기 위해 _this을 생성하지 않습니다. this.buttonPrevious.on("click",() => { 만 그렇게합니다. here을 참조하십시오. 올바른 '이'당신은 항상 얻을 수 있도록

class NavigationWithFatArrow 
{ 
    currentPage: number; 

    wireMouseEvents() 
    { 
     this.buttonPrevious.on("click",() => { 
      if (this.currentPage > 1) 
      { 
       // do more work with Navigation objects 
      } 
     }); 
    } 
} 

당신은 또한 생성자에서 바인딩을 시도해야 할 수 있습니다

당신은 범위를 유지하기 위해 지방 화살표 기능을 사용해야합니다. Ryan Cavanaugh의 답변을 참조하십시오. https://stackoverflow.com/a/16029714/1014822

+0

VS2012에서 복사 한 내용과 일치하지 않는 이유가 확실하지 않습니다. 흠. 제안 해 주셔서 감사합니다. 오늘 아침에 보겠습니다. – mrs99mrs99

+0

Fat Arrow에도 같은 문제가 있습니다. currentPage는 정의되지 않습니다. 다음에 생성자를 바인딩하는 방법을 살펴 보겠습니다. – mrs99mrs99

+0

JcFx : 도와 줘서 고마워. 나는 그것을 작동시켰다. 저를 던지고있는 것들 중 하나는 제가 click 함수에있을 때 클래스 변수가 모두 정의되지 않는다고 말했고 코드가 멈추었습니다. 뭔가 잘못됐다고 생각했습니다. 그러나, 내가 계속해서 클래스 메소드로 들어갔다면 변수가 정의되었다. – mrs99mrs99

관련 문제