我得到了一个EXT JS应用程序,它包含一个函数内部的datefield
(该函数还呈现其他组件)。目前,函数被调用两次以创建(从功能角度来看)两个相同的datefield
组件。两个日期字段组件的区别在于ID和名称不同,因为它们的名称取决于传递给函数的参数。
我想让两个datefield
组件的行为略有不同,而不需要创建两个不同的datefield
组件。我想知道如果满足某些条件,是否可以仅将侦听器应用于组件?
EG:
if(some condition is true){
select: function(datefield, date){
//code
}
}
或者我是否必须为两个组件提供所有侦听器但是执行条件内部,这样如果条件不满足,那么该组件永远不会触发该事件。
EG:
select: function(datefield, date){
if(some condition is true){
//code
}
else{
//Do nothing as this component doesn't need this listener.
}
}
我很确定第二种方式可行,但我不确定这是个好主意。第一种方式似乎略微清洁;我不确定看起来好像没有其他身体躺在那里。
答案 0 :(得分:1)
我在其他组件上做了类似的实现,基本上是这样的:
var yourComponent = Ext.create('...',{});
if (something is true){
yourComponent.on('select', this._doStuff, yourComponent);
}
//
_doStuff: function(component){
//do stuff
}
希望这有帮助。
答案 1 :(得分:1)
您可以使用日期字段的on
方法。
if(some condition){
datefield.on('select', function(field,value){
// code for your select here.
});
}
我认为这应该做你需要的。