我希望能够将侦听器添加到安装文件中指定的活动元素中。安装文件可能是这样的:
<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>
这意味着ID匹配
button-*
的任何元素(button-yes
,-no
和-cancel
除外)都将在触发onButtonClick
事件时调用click
。它不一定是内置事件,可以自定义,例如
fileSystemException
或userTimedOut
。因此,可以在代码中的某个位置触发事件,并且侦听该事件的所有元素都将调用相应的动作。理想情况下,希望在创建任何元素之前尽早加载设置文件,并且甚至可以在运行时创建的元素上添加侦听器。因此,例如,一个即时创建的,满足条件的ID为
button-reject
的新元素将获得侦听器。因此,我想它必须扩展低级创建方法吗?在ExtJS中完成了类似的事情吗?是说通过扩展一个或多个基类?
最佳答案
如果可以将此文件加载到JSON对象或ExtJS HashMap中,则可以全局侦听组件的afterrender事件,以检查HashMap或JSON对象是否匹配并应用相应的侦听器。
这样的事情可能会起作用,但这确实意味着每个组件都必须检查以查看是否有应该应用的侦听器,这可能会带来巨大的性能开销。
关于javascript - Ext JS-在运行时添加监听器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31541300/