【问题标题】:how to add click event for panel and listen to it in controller with panel as argument如何为面板添加点击事件并在控制器中以面板为参数收听它
【发布时间】:2014-04-23 21:50:51
【问题描述】:

我正在将面板动态添加到我的容器中,一旦添加了所有面板,我希望面板有点击事件,并在其中一个控制器中监听事件,点击的面板是参数。

我有以下代码用于添加点击事件。

 '#productListPanel': {              
          afterrender: this.onProductPanelAfterRender,
},


 onProductPanelAfterRender: function(panel) {
    panel.mon(panel.el, 'click', this.onProductPanelClick);
},

 onProductPanelClick: function(a,b) {
    console.log("a");
    console.log(a);
    console.log("b");
    console.log(b);
},

它工作正常并添加了点击事件,但我无法确定正在点击哪个面板。

谁能帮帮我。

谢谢

【问题讨论】:

  • 从您提出的 14 个问题中,您只接受了 2 个?说真的:你真的期待答案吗?

标签: extjs extjs4.1


【解决方案1】:

如果您想在面板呈现后执行此操作,您可以使用以下内容。这假定 myPanel 是对您的面板的引用。

myPanel.getEl().on('click',
    function(){
        alert('Panel Clicked');
    }
);

【讨论】:

    【解决方案2】:

    当您向容器动态添加面板时,您可以在面板定义中添加监听器:

    listeners: {
       'render': function(panel) {
           panel.body.on('click', function() {
               nameOfYourApp.app.fireEvent('ClickPanel',panel);
           });
        }
    }
    

    当面板被点击时触发一个事件并将这个事件监听到你的控制器中。

    您可以将此代码添加到控制器的 init 函数中:

        this.application.addListener({
            'ClickPanel':this.clickPanel
        });
    

    并将“clickPanel”功能添加到您的控制器中:

    clickPanel:function(panel){
        // Your code
    }
    

    希望这对您的问题有所帮助!

    【讨论】:

    • 谢谢大佬!!!它可以工作....而不是将侦听器添加到面板定义中,我可以将其添加到控制器中,只是为了保持视图和控制器分开。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多