我希望能够将侦听器添加到设置文件中指定的活动元素。安装文件可能是这样的:
<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
之外,ID匹配-cancel
的任何元素都会在onButtonClick
时调用click
事件被触发。
它不一定是内置事件,可以是自定义的,例如fileSystemException
或userTimedOut
。因此,可以在代码中的某处触发事件,并且监听它的所有元素都将调用相应的操作。
理想情况下,希望在创建任何元素之前尽早加载安装文件,并且能够将监听器添加到运行时创建的元素。因此,例如,在运行中创建的具有ID button-reject
的新元素将满足标准,将获得监听器。所以我想它必须扩展一个低级创建方法?
在ExtJS中有没有这样的事情?比如扩展一个或多个基类?
答案 0 :(得分:2)
如果您可以将此文件加载到JSON对象或ExtJS HashMap中,那么您可以全局侦听组件的afterrender事件以检查您的HashMap或JSON对象是否匹配并应用相应的监听器。
这样的东西可能会起作用,但这确实意味着每个组件都必须检查是否存在应该应用的侦听器,这可能会产生巨大的性能开销。