1
두 개의 텍스트 필드 사이에 양방향 업데이트가 있습니다 (참고 : MVVM 바인딩을 사용하고 싶지 않습니다).ExtJS의 구성 요소에서 Listener 제거
텍스트 필드 1 업데이트 텍스트 필드 2과 키 누름이 반대의 경우도 마찬가지. 수신 텍스트 필드에서 리스너를 비활성화해야합니다. 그렇지 않으면 무한 루프가됩니다. 내가 키 누르기를 할 경우
Ext.define('MyApp.view.TestView', {
extend: 'Ext.panel.Panel',
layout: 'form',
items: [{
id: 'tf1',
xtype: 'textfield',
fieldLabel: '1',
listeners: {
change: function() {
var r = Ext.ComponentQuery.query('#tf2');
r[0].setValue(this.getValue() + "!")
}
}
}, {
id: 'tf2',
xtype: 'textfield',
fieldLabel: '2',
listeners: {
change: function() {
var r = Ext.ComponentQuery.query('#tf1');
r[0].setValue(this.getValue() + "!")
}
}
}]
});
은 물론 위의 예에서 나는 무한한 두 개의 텍스트 필드와 끝까지 '!' 결국.
바이올린은 여기에 있습니다 : 나는 청취자를 비활성화해야
https://fiddle.sencha.com/#fiddle/1ces
. 나는 '의 removeListener'를 살펴했고, 나는 당신이이 같이 사용할 것이라고 생각 :
내 리스너에 대한 참조가 필요합니다, 그래서 SetValue는 일단 다시 추가 할 수 있습니다 그러나 r[0].removeListener('change');
(..) 발생했습니다.
참고로 'suspendEvent'를 사용하고 이름을 전달하여 특정 이벤트를 일시 중단 할 수 있습니다. –