2017-12-11 23 views
0

AngularJS에서 내 페이지에 대해 hotkay를 작성해야합니다.AngularJS에서 ng-bind를 document.addEventListener()와 함께 사용하는 방법?

<div ng-click="$ctrl.logKey()" ng-bind="$ctrl.wordToShow"></div> 

문제는 다음과 같습니다 템플릿이

export class listenKey { 

    constructor() { 
     document.addEventListener("keydown", (e) => this.keyDownTextField(e), false); 
    } 

    keyDownTextField(e: any) { 
     var keyCode = e.keyCode; 
     this.logKey(keyCode); 

     this.wordToShow = "Hello world!"; 
    } 

    logKey(key: any) { 
     console.log(key); 
    } 
} 

: 나는

document.addEventListener()를 사용

방법 keyDownTextField는() 값 wordToShow을 설정합니다 : div가 클릭되었을 때 ng-bind가 작동하지만 addEventListener가 th를 등록 할 때 작동하지 않습니다. 키를 누르면됩니다. 그것을 해결하는 방법?

답변

0

AngularJS는 이벤트 수신기 콜백에서 다이제스트주기를 트리거하는 것을 모릅니다.

당신은 시간 제한에 this.keyDownTextField(e)을 포장 할 수 있습니다

document.addEventListener("keydown", (e) => $timeout(() => this.keyDownTextField(e), 0), false); 

$timeout 서비스를 주입하는 것을 잊지 마세요!

this.wordToShow = "Hello world!"; 이후에 $scope.$applykeyDownTextField(e: any)으로 호출 할 수도 있습니다. $scope을 주입하는 것을 잊지 마십시오!

ng-keypress (ngKeyPress)로 작성된 AngularJS도 확인하십시오.