2014-02-20 5 views
1

키 누르기 및 keydown 이벤트를 바인딩하려는 지시문이 있지만 어떤 이유로 등록하지 않습니다.keydown 및 keypress 이벤트가 각도로 작동하지 않습니다.

element.bind("keydown keypress", function (event) { 
    console.log("here"); 
}); 

실마리가 될 수있는 단서는 무엇입니까?

파일 selectMe.js에서이 plnkr을 보면 바인딩을 볼 수 있습니다.

+0

템플릿의 지시문은 어디에 있습니까? – Shomz

+0

미안 .. 미안 .. 내가 디버깅 중이 었어 .. 다양한 이벤트 중이 야 .. 다시 넣어 줘. 파일을 확인해 봐. selectMe.js – runtimeZero

+1

기본 지시문을 사용하지 않는 이유가 있니? http://docs.angularjs.org/api/ng/directive/ngKeypress 또한 무엇을 묶으려고합니까? 핵심 행사를 갖기 위해 집중할 무언가가 필요하지 않습니까? – hassassin

답변

0

테이블 요소에 바인딩하는 경우 테이블에 포커스가 없으므로 키 이벤트를받지 못합니다. 포커스를 가질 수있는 요소에 대한 정보는 this question을 참조하십시오.

그러나 이벤트는 거품처럼 보이지 않으므로 보이지 않는 입력 또는 앵커 요소를 추가하고 거품이 일 때 키보드 이벤트를 가져 오거나 문서 요소를 수신하여 처리되지 않은 이벤트를 수신 할 수 있습니다. 당신은 대신 컨트롤 키를 직접 추적의 키 이벤트에 ctrlKey 플래그를 확인할 수 있습니다

var doc = angular.element(document); 
doc.on('keyup', function(e) { 
    if (e.ctrlKey) { 
    if (e.keyCode === cKey) { 
     $scope.valueToBeCopied = e.target.value; 
     console.log('copy: valueToBeCopied: ' + $scope.valueToBeCopied); 
     } 
     if (e.keyCode === vKey) { 
     e.target.value = $scope.valueToBeCopied; 
     console.log('paste: valueToBeCopied: ' + $scope.valueToBeCopied); 
     } 
    } 
}); 

당신이 시도 될 것으로 보인다 것과 불구 데 도움이 얼마나 모른다. 어떤 요소가 가상의 '포커스'를 가지고 있는지 추적해야합니다.

+0

제이슨 .. 조용히 작동하지 않습니다. 이것은 단순히 테이블의 모든 셀을 제공하고 클릭 한 셀이 아닙니다 .. 여기 plnkr을 볼 수 있습니다 http://plnkr.co/edit/0NuKiaKYxmDl2NVSTaDJ goto file ctMyCell .js – runtimeZero

+0

행을 선택하는 위치가 표시되지 않습니다. 이것이 내 마지막 진술에 관한 것입니다. 행을 선택으로 표시하려면 무언가를해야합니다. 즉, 'selected'클래스를 테이블 행에 추가하거나 선택된 속성을 범위 또는 행 객체에 추가해야합니다. 나는 당신의 질문에 당신이 나를 돕기 위해 무엇을하려고하는지에 대해 충분한 세부 사항을 가지고 있다고 생각하지 않습니다. 이 질문은 독자적으로 유용 할만큼 충분히 제한적이라고 생각하기 때문에 더 자세한 내용으로 다른 질문을 작성해야합니다. –

2

<table>tabindex="0"을 추가하십시오. 이를 통해 <table>을 클릭하거나 tab을 눌러 초점을 맞출 수 있습니다. 그러나 페이지가로드되는 즉시 키 이벤트 수신을 시작하는 데 관심이있을 수 있습니다. 그런 다음 이벤트를 document에 바인드해야합니다.

angular.element(document).bind(...) 
관련 문제