Javascript ext js有条件地将侦听器应用于componenet
我得到了一个extjs应用程序,它包含一个Javascript ext js有条件地将侦听器应用于componenet,javascript,extjs,Javascript,Extjs,我得到了一个extjs应用程序,它包含一个datefield,它位于一个函数内部(该函数还呈现其他组件)。目前,函数被调用两次,以创建(从函数的角度来看)两个idencticaldatefield组件。这两个datefield组件的区别在于ID和名称不同,因为它们的命名取决于传递到函数中的参数 我想给这两个datefield组件稍微不同的行为,而不需要创建两个不同的datefield组件。我想知道,如果满足某些条件,是否可以只将侦听器应用于组件 例如: 或者我是否必须为这两个组件提供所有侦听器,
datefield
,它位于一个函数内部(该函数还呈现其他组件)。目前,函数被调用两次,以创建(从函数的角度来看)两个idencticaldatefield
组件。这两个datefield组件的区别在于ID和名称不同,因为它们的命名取决于传递到函数中的参数
我想给这两个datefield
组件稍微不同的行为,而不需要创建两个不同的datefield
组件。我想知道,如果满足某些条件,是否可以只将侦听器应用于组件
例如:
或者我是否必须为这两个组件提供所有侦听器,但在内部执行条件,以便如果条件不满足,则永远不会为该组件触发该事件
例如:
我相当肯定第二种方法会奏效,但我不确定这是个好主意。第一条路看起来稍微干净一点;我不确定它是否看起来太好,因为它周围有空的其他实体。我在其他组件上也做了类似的实现,基本上类似于:
var yourComponent = Ext.create('...',{});
if (something is true){
yourComponent.on('select', this._doStuff, yourComponent);
}
//
_doStuff: function(component){
//do stuff
}
希望这有帮助。您可以使用日期字段的
方法
if(some condition){
datefield.on('select', function(field,value){
// code for your select here.
});
}
我认为这应该满足您的需要。因此,当您在
方法上使用时,处理函数是否可以使用与事件侦听器相同的参数?例如,对于datefield
中的select事件侦听器,函数参数是datefield
本身和所选日期。您可以像这样使用datefield.on('select',onDateSelect)
,然后有:onDateSelect:function(field,value){}
var yourComponent = Ext.create('...',{});
if (something is true){
yourComponent.on('select', this._doStuff, yourComponent);
}
//
_doStuff: function(component){
//do stuff
}
if(some condition){
datefield.on('select', function(field,value){
// code for your select here.
});
}