配置中的 Extjs 侦听器

Posted

技术标签:

【中文标题】配置中的 Extjs 侦听器【英文标题】:Extjs listener out of the config 【发布时间】:2014-03-29 22:27:36 【问题描述】:

您好 extjs 专家,我有一个简单的问题,但找不到正确的方法,现在在谷歌上搜索了几天。我在 extjs 元素的配置中有一个侦听器,以这种方式很容易做到这一点,但是我如何将侦听器从配置中取出,并将其放在配置之外,以便配置尽可能少,并且一个侦听器可以多次使用只是真正的函数调用, 这是我的代码:

Ext.define("my.filter.TimeFilter",
extend: "Ext.tab.Panel",
alias: "widget.myTimeFilter",
requires: ["my.filter.Filters"],
config: 
    cls: 'ruban-filter-timefilter',
     items: [
            
                title: 'Time sections',
                xtype: 'radiogroup',
                fieldLabel: 'Time Selector',
                items: [
                    
                        boxLabel: '60 Mins',
                        name: 'unixMills',
                        inputValue: '3600000'
                    , 
                        boxLabel: '8 Hours',
                        name: 'unixMills',
                        inputValue: '28800000'
                    , 
                        boxLabel: '24 Hours',
                        name: 'unixMills',
                        inputValue: '86400000'
                    , 
                        boxLabel: '7 Days',
                        name: 'unixMills',
                        inputValue: '604800000'
                    , 
                        boxLabel: '30 Days',
                        name: 'unixMills',
                        inputValue: '2592000000'
                    
                    ],
                    listeners: 
                        change: function (field, newValue, oldValue) 
                            var endTime = new Date().getTime();
                            var startTime = endTime - newValue['unixMills'];
                            console.log("StartTime: " + startTime);
                            console.log("EndTime: " + endTime);

                        


            
        ]
    ,

constructor: function(config)
    this.callParent(arguments);

);

所以我相信它应该将构造函数作为单独的函数或作为侦听器本身进行处理,但我不知道,对 js 和 extjs 不太熟悉, 谢谢大家

【问题讨论】:

【参考方案1】:

您可以通过这种方式在配置之外添加侦听器:

myElement.on('change', function ()  ... 

【讨论】:

【参考方案2】:

有很多可能性。

如果你有很多基于事件的逻辑,你总是可以创建一个控制器并让它们监听组件。这里的控制器文档应该可以让您很好地了解如何将它们结合在一起:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.app.Controller

【讨论】:

以上是关于配置中的 Extjs 侦听器的主要内容,如果未能解决你的问题,请参考以下文章

甚至从事件侦听器/ ExtJS 禁用组合框中的项目

Extjs 4.1 - CellEditing 插件中的侦听第二次不起作用

ExtJS5 ViewController 侦听器未触发

单击 EXTJS 中选项卡面板的侦听器

ExtJS 更改事件侦听器未能触发

在 ExtJs 4 中覆盖侦听器