Ext JS - 在 运行 时间添加监听器

Ext JS - adding listeners at run-time

我希望能够将侦听器添加到设置文件中指定的活动元素。安装文件可能是这样的:

<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,当 [=17] 时将调用 onButtonClick =] 事件被触发。

不一定是内置事件,可以是自定义的,比如fileSystemException,或者userTimedOut。因此,可以在代码中的某处触发一个事件,所有侦听它的元素都将调用相应的操作。

理想情况下,希望在创建任何元素之前尽早加载设置文件,并且能够将侦听器添加到运行时创建的元素中。因此,例如,一个 ID 为 button-reject 的新元素,动态创建,满足条件,将获得侦听器。所以我猜它必须扩展一个低级别的创建方法?

在 ExtJS 中有这样的事情吗?比如扩展一个或多个基数 类?

如果您可以将此文件加载到 JSON 对象或 ExtJS HashMap, then you can globally listen for a component's afterrender 事件中以检查您的 HashMap 或 JSON 对象是否匹配并应用相应的侦听器。

类似的方法可能有效,但这确实意味着每个组件都必须检查是否有应应用的侦听器,这可能会产生巨大的性能开销。