In the API documentation, addListener method accepts four arguments
PHP Code:
el.on('click', this.onClick, this, {
single: true,
delay: 100,
forumId: 4
});
The fourth argument can contain custom options (like forumID in the above example).
But, when the handler function is called, the customs options are not passed.
Example:
PHP Code:
Ext.onReady(function(){
var myButton = new Ext.Button({
text: 'Click Me'
});
var onClick = function (observable, e, options) {
console.log(options);
};
myButton.on('click', onClick, myButton, {myArgument:'Custom'});
myButton.render(document.body);
});
Firebug returns undefined for options
This bugs comes from the Ext.util.Observable.prototype.fire method (Observable.js)
PHP Code:
fire : function(){
var ls = this.listeners, scope, len = ls.length;
if(len > 0){
this.firing = true;
var args = Array.prototype.slice.call(arguments, 0);
for(var i = 0; i < len; i++){
var l = ls[i];
if(l.fireFn.apply(l.scope||this.obj||window, arguments) === false){
this.firing = false;
return false;
}
}
this.firing = false;
}
return true;
}
It should be
PHP Code:
fire : function(){
var ls = this.listeners, scope, len = ls.length;
if(len > 0){
this.firing = true;
var args = Array.prototype.slice.call(arguments, 0);
for(var i = 0; i < len; i++){
var l = ls[i];
args.push(l.options); // options are appended to args array
if(l.fireFn.apply(l.scope||this.obj||window, args) === false){ // args instead of arguments
this.firing = false;
return false;
}
}
this.firing = false;
}
return true;
}