1
私は2つのテキストフィールドの間で双方向の更新を行っています(注:MVVMバインディングを使用したくありません)。ExtJSのコンポーネントからリスナーを削除する
テキストフィールドテキストフィールド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() + "!")
}
}
}]
});
上記の例で明らかに私がキーを押すと、無限の「!」という2つのテキストフィールドが表示されます。最後に。
フィドルはここにある:私はリスナーを無効にする必要が
https://fiddle.sencha.com/#fiddle/1ces
。 (..)私は私のリスナーへの参照を必要とするので、私はsetValueの後に戻ってそれを追加することができますしかし
r[0].removeListener('change');
:私は「のremoveListener」を見ていた、と私はあなたがこのようにそれを使うだろうと思います発生しました。
「suspendEvent」を使用して、特定のイベントを中断するために名前を渡すことができます。 –