现在,我可以处理change
中checkbox
的{{1}}事件。我是这样做的:
controller
我不喜欢这个,即使复选框的状态以编程方式更改,此事件也会触发 - 例如,当第一次绑定值时。所有这些都会导致不必要的服务器请求:
我不喜欢这个。我想要键盘事件或检查事件,以便我可以触发服务器请求,只有当手动更改复选框的状态而不是以编程方式更改时。
答案 0 :(得分:1)
您可以尝试在复选框mousedown/keydown
中添加el
处理程序,然后在那里设置标记,并在更改事件处理程序中检查该标记
{
xtype: 'checkboxfield',
listeners: {
mousedown: {
element: 'el',
fn: function (e, el) {
Ext.getCmp(e.currentTarget.id).myFlag = true
}
},
change: function (cb, newValue, oldValue, eOpts) {
console.log(cb, cb.myFlag)
}
}
}
答案 1 :(得分:0)
如果您使用 setValue 将值设置为组合,则会触发更改事件。 查看here
您可以使用 suspendEvents 和 resumeEvents 来避免这种情况。
在设置值之前调用 suspendEvents ,并在设置值后调用 resumeEvents(true)。
suspendEvents 将为 setValue 触发的所有事件和 resumeEvents 将agaib恢复触发事件。不要忘记将真正的论点传递给resumeEvents
combo.suspendEvents();
combo.setValue(value);
combo.resumeEvents(true);