ExtJS:复选框单击或键盘事件

时间:2016-09-03 07:56:25

标签: javascript extjs

现在,我可以处理changecheckbox的{​​{1}}事件。我是这样做的:

controller

我不喜欢这个,即使复选框的状态以编程方式更改,此事件也会触发 - 例如,当第一次绑定值时。所有这些都会导致不必要的服务器请求:

  1. 第一个请求从服务器获取数据并将值绑定到复选框
  2. 触发更改事件并完成另一个服务器请求
  3. 我不喜欢这个。我想要键盘事件或检查事件,以便我可以触发服务器请求,只有当手动更改复选框的状态而不是以编程方式更改时。

2 个答案:

答案 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);

详细了解suspendEventsresumeEvents

相关问题