Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Обработка событий (https://javascript.ru/forum/extjs/19247-obrabotka-sobytijj.html)

Shtorm 29.07.2011 18:31

Обработка событий
 
Доброго времени суток.
Подскажите как можно реализовать следующую вещь.
Есть форма на которой есть поля для ввода текста. Как по нажатию на кнопку вызвать событие у этих полей, которое сбрасывает поле в значение по умолчанию.
Да конечно можно пробежаться по всем элементам и вызвать fireEvent, но делать подобное если у тебя штук 20 форм не очень удобно.
Есть ли способ вызвать fireEvent для всех полей НЕ в цикле?

nikolaich 29.07.2011 20:20

Думаю если заданы значения по умолчанию, то достаточно выполнить метод reset() для формы, и всем полям будут присвоены их значения по умолчанию. Как-то так. Если правильно понял вопрос.

Shtorm 29.07.2011 21:39

Ну это частный случай. В данном случае это выход. Интересует вопрос возможно ли добавить контейнеру событие, которое будет срабатывать в том случае, что я описал? Т.е. есть форма, внутри куча контейнеров и кнопка. Нажав на кнопку вызывается событие контейнеров, при этом что б не было необходимости перебирать все компоненты и вызывать эти события в цикле.

nikolaich 30.07.2011 11:12

Я конечно не большой специалист в ExtJS, но по моему Вы все усложняете. Если посмотреть исходный код метода reset() для формы, то там идет именно перебор полей формы в цикле:
reset: function() {
        var me = this;
        me.batchLayouts(function() {
            me.getFields().each(function(f) {
                f.reset();
            });
        });
        return me;
    }


Ну а так Вы можете определить свое событие. Подписать на это событие все Ваши "контейнеры". И в обработчике выполнять необходимые действия. А по нажатию на кнопку генерировать описанное выше событие.

Но по моему, если эти контейнеры являются формами, то проще по нажатию на кнопку просто перебрать их в цикле, и выполнить для них метод reset(). И всего то пару строк кода.

Shtorm 30.07.2011 22:56

Да, соглашусь.
Раз в Ext так реализуют, то очевидно, что для этого фреймворка это решение верное.
Спасибо за помошь.


Часовой пояс GMT +3, время: 17:04.