[英]ExtJS: checkbox click or keyup event
现在,我可以在controller
处理checkbox
change
事件。 我这样做是这样的:
"[itemId=TestCheckbox]": {
change: this.updateCheckbox
}
我对此不满意的是,即使以编程方式更改了复选框的状态(例如,第一次绑定该值时),也会触发此事件。 所有这些导致不必要的服务器请求:
我不喜欢这个。 我想要诸如keyup事件或check事件之类的东西,以便仅当手动更改复选框的状态而不是通过编程更改状态时,才可以触发服务器请求。
您可以尝试将mousedown/keydown
处理程序添加到复选框el
,然后在其中设置一个标志,然后在change事件处理程序中检查该标志
{
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)
}
}
}
如果您正在使用setValue将值设置为combo,则会触发change event。 在这里检查
您可以使用suspendEvents和resumeEvents避免这种情况。
在设置值之前调用suspendEvents,在设置值之后调用resumeEvents(true) 。
suspendEvents将覆盖由setValue触发的所有事件, resumeEvents将再次恢复触发事件。 不要忘记将true参数传递给resumeEvents
combo.suspendEvents();
combo.setValue(value);
combo.resumeEvents(true);
阅读更多有关suspendEvents和resumeEvents的信息 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.