[2.2] Cannot use custom arguments in listener handler
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;
}
Problem when firing an event
Hello,
I have this problem when firing a custom event, at the next line:
this.fireEvent("myEvent", anObjectAsParameter);
I receive the next error:
l.fireFn has no properties
(?)()(Object scope=Object options=Object)ext-all-debug.js (line 2124)
apply()(Object 0=Object, function(), undefined)ext-base.js (line 7)
fire()()ext-all-debug.js (line 2122)
fireEvent()()
...............
* if (l.fireFn.apply(l.scope || me.obj || window, args) === FALSE) {
Any ideea?