먼저 이벤트를 정의해 보겠습니다.
person = function (이름 ) {
this.name = 이름;
this.addEvents("walk")
}
Ext.extend(person, Ext.util.Observable, {
정보: function( event) {
return this.name 'is' event 'ing.'
}
})
var person = new person('장민누')
person .on('walk', function() {
Ext.Msg.alert('event', person.name '걷고 또 걷는다.');
})
그런 다음 걷기 이벤트를 트리거하는 버튼을 정의합니다.
var btn = new Ext.Button({
id: 'walk',
text: '트리거 이벤트 버튼',
renderTo: Ext.getBody()
}); btn.on('click', function() {
person.fireEvent('walk');
})
버튼을 클릭하면 이벤트가 발생합니다. 효과는 아래와 같습니다. 표시:
이제 다음 코드와 같이 이벤트 트리거를 가로채기 위해 Capture() 함수를 사용합니다.
var btn2 = new Ext.Button({
id: 'cc',
text: '차단 이벤트',
renderTo : Ext.getBody()
})
btn2.on('click', function() {
Ext.util.Observable.capture( person, function() {
alert(' fsdjhf');
return
})
})
btn2 버튼을 클릭하면 대화 상자가 나타난 후 이벤트가 트리거되는 것을 확인할 수 있습니다. . . . 이제 false를 반환하도록 코드의 마지막 줄을 변경해 볼까요? 이벤트가 성공적으로 차단되었습니다!
이는 Capture()에서 처리 함수의 반환 값을 제어하여 특정 시간에 청취 기능을 계속 실행할지 아니면 이벤트 발생을 직접 중단할지 선택할 수 있는 기회를 제공합니다.
객체에 대해 여러 개의 캡처() 차단 기능을 설정할 수도 있습니다. 이러한 차단 기능은 처리 체인을 형성합니다. 차단 기능 중 하나라도 false를 반환하면 처리 프로세스가 중단됩니다.
releaseCapture() 함수는 Capture() 함수의 역동작으로, fireEvent()에 대한 모든 차단 기능을 한번에 삭제하지만 특정 차단 기능을 정확하게 삭제할 수는 없습니다. releaseCapture()가 실행되면 이전에 설정된 모든 차단 기능이 무효화됩니다.