2015-01-12 2 views
0
init: function(){ 
    this.callParent(arguments); 
    map = new Ext.util.KeyMap(Ext.getBody(),{     
    key: Ext.EventObject.F8, 
    scope: this, 
    target:this, 
    fn: this.onKeyPress 
    }); 
} 

init 메소드는 subscription시 이벤트를받습니다. 페이지를 떠나 map.destroy를 수행 할 때 메서드가 있습니까? 문제는 페이지로 이동하여 구독 이벤트가 발생하고 F8 키를 누를 때 발생합니다. 이 페이지에서만 작동하는 방법?Ext.util.KeyMap destroy 메소드

답변

0

Ext.getBody()을 KeyMap으로 지정했기 때문에이 문제가 발생합니다. targetthis을 가리키고 있더라도 이전에 Ext.getBody()을 추가하면 해당 페이지의 현재 위치와 관계없이 KeyMap이 작동합니다. 두 가지 옵션이 있습니다. 1) 대상에 구성 요소를 지정하십시오. onKeyPress 메서드는 구성 요소에서 선택된 것이있는 경우에만 호출됩니다.

예 :target : component.getEl()을 설정하면 텍스트 필드가 패널 내부에 포커스가있는 동안 F8 키를 누르면 onKeyPress 메서드가 호출됩니다.

2) onKeyPress 메서드를 페이지에 포커스가있을 경우 아무렇게든 호출하려는 경우 Ext.getBody()에 계속 추가하십시오. 그러나 특정 페이지가 활성화 된 경우에만 작동해야하는 경우 onKeyPress 메소드에 조건을 추가해야합니다.

예 :

여기
onKeyPress : function() { 
    currentTab = this.getActiveTab(); 
    if (currentTab.title=='Foo') { 
     console.log('You hit F8'); 
    } 
} 

는 바이올린 과정을 시연 : https://fiddle.sencha.com/#fiddle/g7a

+0

방법 getActiveTab는() available.Dont는 이유를 알고하지 않습니다. F8을 사용하려면이 페이지를 대상으로 일부 대화 상자를 표시해야합니다. – SorcerOK

+0

getActiveTab은 TabPanel 클래스에만 존재하므로 예제를 필요에 맞게 수정해야합니다. –