嗨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, 谢谢大家
答案 0 :(得分:0)
您可以通过以下方式在配置之外添加侦听器:
myElement.on('change', function () { ... }
答案 1 :(得分:0)
有很多可能性。
如果你有很多基于事件的逻辑,你总是可以创建一个控制器并让他们听取组件。这里的控制器文档应该让您非常了解如何将它组合在一起:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.app.Controller