Как установить флажок без запуска события изменения? - PullRequest
9 голосов
/ 11 мая 2011

У меня есть простой флажок:

r = new Ext.form.Checkbox({
    listeners: {
        check: function(checkbox, checked) {
        }
    }
}

r.setValue(true);

Как установить флажок без проверки fireevent (я хочу проверить fireevent ТОЛЬКО по щелчку мыши)? (setValue не работает).

Ответы [ 5 ]

29 голосов
/ 11 мая 2011

Вы должны приостановить события до установки значения и возобновить события после этого. Например:

myCheckBox.suspendEvents(false); // Stop all events. 
                                 //Be careful with it. Dont forget resume events!
myCheckBox.setValue(!myCheckBox.getValue()); // invert value
myCheckBox.resumeEvents(); // resume events
1 голос
/ 11 сентября 2012

Почему вы просто не установите r.checked = true, это не работает?

Установка отмеченных атрибутов повлияет только на не визуализированный элемент управления, чтобы назначить начальное значение элемента управления. После рендеринга вы не можете использовать это, чтобы изменить значение.

События приостановки / возобновления - это хорошая практика для изменения контрольного значения без отправки уведомлений.

Также вы можете немедленно поставить проверенное состояние элементу dom:

item.el.dom.checked = true;

1 голос
/ 12 января 2012

Почему вы просто не установите r.checked = true, это не работает?

0 голосов
/ 27 февраля 2015

Вызов suspendEvents(false) перед установкой значения и resumeEvents() впоследствии - более общий подход, чем setRawValue, потому что, если вы используете конвертеры (скажем, 1 это true и 0 это false) они будут работать.

0 голосов
/ 14 июня 2013

Я уже пробовал принятый ответ до поиска в Google, но он не работал в 4.1.3. Сделали следующее:

myCheckBox.setRawValue(true);

Надеюсь, это поможет будущим гуглерам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...