簡體   English   中英

ExtJS:復選框單擊或鍵入事件

[英]ExtJS: checkbox click or keyup event

現在,我可以在controller處理checkbox change事件。 我這樣做是這樣的:

"[itemId=TestCheckbox]": {
   change: this.updateCheckbox
}

我對此不滿意的是,即使以編程方式更改了復選框的狀態(例如,第一次綁定該值時),也會觸發此事件。 所有這些導致不必要的服務器請求:

  1. 第一個請求從服務器獲取數據,並將值綁定到復選框
  2. 觸發更改事件,並且另一個服務器請求已完成

我不喜歡這個。 我想要諸如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。 在這里檢查

您可以使用suspendEventsresumeEvents避免這種情況。

在設置值之前調用suspendEvents,在設置值之后調用resumeEvents(true)

suspendEvents將覆蓋由setValue觸發的所有事件, resumeEvents將再次恢復觸發事件。 不要忘記將true參數傳遞給resumeEvents

combo.suspendEvents();
combo.setValue(value);
combo.resumeEvents(true);

閱讀更多有關suspendEventsresumeEvents的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM