패널에 두 번 클릭 이벤트를 추가하고 싶습니다. 내가 어떻게 그럴 수 있니? 그래서 일부 HTML, 다른 이벤트 또는 클릭 할 수있는 항목이있는 패널이 있으며 두 번 클릭을 캡처 할 수 있기를 원합니다.패널에서 Extjs 두 번 클릭 이벤트
사실 큰 hunk html을 표시 할 수있는 구성 요소는 두 번 클릭 할 수있는 한 괜찮습니다.
Sencha의 문서를 검색 한 결과 두 번 클릭 이벤트가 많은 구성 요소가 없습니다.
패널에 두 번 클릭 이벤트를 추가하고 싶습니다. 내가 어떻게 그럴 수 있니? 그래서 일부 HTML, 다른 이벤트 또는 클릭 할 수있는 항목이있는 패널이 있으며 두 번 클릭을 캡처 할 수 있기를 원합니다.패널에서 Extjs 두 번 클릭 이벤트
사실 큰 hunk html을 표시 할 수있는 구성 요소는 두 번 클릭 할 수있는 한 괜찮습니다.
Sencha의 문서를 검색 한 결과 두 번 클릭 이벤트가 많은 구성 요소가 없습니다.
두 번 클릭 이벤트의 이벤트가 Ext.Component
이 아니며, Ext.Element
의 이벤트입니다. Ext.Components
은 Ext.Element
을 렌더링하므로 컴포넌트가 render
이벤트를 기다리지 않고 생성 한 요소에 대해 처리기를 설정할 수있는 방법을 제공합니다.
dblclick
이벤트에 대한 수신기를 설정하여 처리 할 패널의 Ext.Element
을 지정하면됩니다. 당신이 컨트롤러에서 이벤트를 처리 할 수있게하려면 http://jsfiddle.net/eVzqT/
new Ext.Panel({
html: 'Here I am',
title: 'Title',
width: 400,
height: 500,
listeners: {
dblclick : {
fn: function() {
console.log("double click");
},
// You can also pass 'body' if you don't want click on the header or
// docked elements
element: 'el'
}
},
renderTo: Ext.getBody()
});
, 당신은 구성 요소
new Ext.Panel({
html: 'Here I am',
title: 'Title',
width: 400,
height: 500,
listeners: {
dblclick : {
fn: function(e, t) {
this.fireEvent('dblclick', this, e, t);
},
// You can also pass 'body' if you don't want click on the header or
// docked elements
element: 'el',
scope: this
}
},
renderTo: Ext.getBody()
});
에 요소에서 이벤트를 중계 할 필요가 : 여기
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.panel.Panel-method-addListener은 예입니다 플러그인으로 추상화 될 수 있습니다.
/**
* Adds an Ext.Element event to a component
* could be improved to handle multiple events and to allow options for the event
*/
Ext.define('my.plugin.ComponentElementEvent', {
extend: 'Ext.AbstractPlugin',
alias: 'plugins.cmp-el-event',
/**
* @cfg {String} eventName Name of event to listen for, defaults to click
*/
eventName: 'click'
/**
* @cfg {String} compEl Name of element within component to apply listener to
* defaults to 'body'
*/
compEl: 'body',
init: function(cmp) {
cmp.on(this.eventName, this.handleEvent, this, {element: this.compEl});
},
handleEvent: function(e,t) {
this.getCmp().fireEvent(this.eventName, this.getCmp(), e, t);
}
});
그리고 다음과 같은 플러그인을 사용할 수 있습니다.
달콤한 감사, 나는 완전히 청취자를 잊어 버렸습니다. 나는 MVC 컨트롤러를 사용하고 이벤트 리스너를 추가했다. control = { 'panel': {listers : {dbclick : {fn : function() {}, element : 'el'}}} 같은 것을 할 수 있는지 아십니까? – Jerinaw
불가능합니다. 컨트롤러는 구성 요소 이벤트 만 수신 할 수 있습니다. 구성 요소에 마우스 이벤트를 추가하는 플러그인을 만들 수 있습니다 ... 업데이트 대답 ... –
우리가 이벤트를 수동으로 실행하면 control() 메서드에서 컨트롤러를 통해이를 잡을 수있는 방법이 있습니까? – arvindwill