Attach ExtJS MVC controllers to DOM elements, not components

前端 未结 5 1441
执念已碎
执念已碎 2020-12-13 05:10

Is there a way to use the Ext.app.Controller control() method, but pass in a DOM query? I have a page that contains standard links and would like to add a click handler to

5条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-13 05:22

    I also have a solution that works around this problem. I use this technique regardless though as it has other benefits: I created an application wide messaging bus. Its an object in my application that extends Observable, and defines a few events. I can then trigger those events from anywere in my app, including html a links. Any component that wants to listen to those events can relay them and they'll fire as if fired from that component.

    Ext.define('Lib.MessageBus', {
        extend: 'Ext.util.Observable',
    
        constructor: function() {
            this.addEvents( 
                      "event1",
                      "event2"
                     );
            this.callParent(arguments);
        }
    });
    

    Then, each other compnent can add this after initialisation:

    this.relayEvents('Lib.MessageBus', ['event1','event2']);
    

    and then listen to those events. You can trigger the events from anything by doing:

    Lib.MessageBus.fireEvent('event1', 'param a', 'param b')
    

    and you can do that from anything including html links.

    Very handy to fire off events from one part of the app to another.

提交回复
热议问题