Я хотел бы добавить слушателей в активные элементы, как указано в установочном файле. Установочный файл может быть что-то вроде этого:Ext JS - добавление слушателей во время выполнения
<listeners>
<listener>
<field>id</field>
<match>button-*</match>
<using>reg-exp</using>
<excludes>
<exclude>button-yes</exclude>
<exclude>button-no</exclude>
<exclude>button-cancel</exclude>
</excludes>
<event>click</event>
<action>onButtonClick</action>
</listener>
<listener>...</listener>
</listeners>
Что означает любой элемент с идентификатором, соответствующим button-*
, за исключением button-yes
, -no
и -cancel
, будет вызывать onButtonClick
когда click
события.
Это не обязательно должно быть встроенное событие, может быть обычным, например fileSystemException
, или userTimedOut
. Таким образом, событие может быть запущено где-то в коде, и все прослушивающие его элементы будут иметь соответствующие действия.
В идеале хотел бы загрузить файл установки очень рано, прежде чем создавать какие-либо элементы, и иметь возможность добавлять слушателя даже к элементу, созданному во время выполнения. Так, например, новый элемент с ID button-reject
, созданный «на лету», который выполняет критерии, получит слушателя. Поэтому я предполагаю, что он должен расширить метод создания низкого уровня?
Что-то вроде этого сделано в ExtJS? Скажите, расширив один или несколько базовых классов?
Можете ли вы предложить ссылку о том, как добавить глобального прослушивателя для 'afterrender'? Я попробовал 'Ext.on (« afterrender », function (data) { \t для (ввод данных) \t \t console.log (" *** after-render "+ key +" \ t "+ data [key ]); }); 'перед тем, как приложение определено, но оно не вызывается. – Buddy
Вы можете добавить его в init или конструктор главного контроллера: 'Ext.define ('AM.controller.Users', { init: function() { this.listen ({ ) Компонент: { '*' : { afterrender: this.someMethod }} });} , ... }); ' – cpastore84
Их [документация] (http://docs.sencha.com/extjs/4.2.2/ #!/api/Ext.app.Controller-method-listen) может быть более понятным. – cpastore84