У меня есть двухстороннее обновление между двумя моими текстовыми полями (ПРИМЕЧАНИЕ. Я не хочу использовать привязку MVVM для этого).Удаление прослушивателей из компонентов в ExtJS
обновления текстового поля 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() + "!")
}
}
}]
});
Очевидно, что в приведенном выше примере, если я нажатие клавиши я в конечном итоге с двумя TextFields с бесконечным «!» в конце.
Fiddle здесь:
https://fiddle.sencha.com/#fiddle/1ces
мне нужно отключить слушателей. Я имел взгляд на « удаления слушателя», и я думаю, что вы бы использовать его как это:
r[0].removeListener('change');
Однако мне нужна ссылка на мой слушатель, так что я могу добавить его обратно один раз в SetValue (..) произошло.
Обратите внимание, что вы можете использовать 'suspendEvent' и передать имя для приостановки определенных событий. –