Foro

ayuda con createDelegate en un tools

0
Hola amigos, quisiera que me ayudaran con algo: tengo esto, main.js
var westPanel = {
		id: 'westPanel',
		region: 'west',
		layout: 'card',
		split: true,
                width: 220,
                collapsible: true,
		tools:[{
                        id: 'close',
			handler: togglePanel.createDelegate(this, this.params),
			params: {idPanel: 'westPanel'}
               }]
};
function togglePanel(cfg){
		console.debug ("%o", cfg);
		var cfg = cfg.params;
		var cardPanel = Ext.getCmp(cfg.idPanel);
		if (cardPanel){				
			if(cardPanel.isVisible()){
				cardPanel.hide();
			}else{
				if(cardPanel.collapsed){
					cardPanel.expand();
					cardPanel.hide();
				}else{
					cardPanel.expand();
					cardPanel.show();
				}
			}
			viewport.doLayout();
		}
	};
la funcion togglePanel solo oculta o muestra un panel, el id del panel es pasado justo a la hora de invocar la funcion, por medio de un objeto CFG en los parametros (params). probando con este handler funciona bien:
handler: function(){
     togglePanel({params: {idPanel: 'westPanel'}});
}
este handler funciona bien, la consola de firebug me muestra el objeto "cfg" con una propiedad "params" que a su vez tambien es un objeto y tiene la propiedad "idPanel" que es el id del panel para mostrar u ocultar. cfg = Object params = Object { idPanel="westPanel"} hasta aqui todo bien, pero... <!-- s:( --><!-- s:( --> cuando intento esto:
handler: togglePanel.createDelegate(this, this.params),
params: {idPanel: 'westPanel'}
aqui no funciona. el objeto "cfg" dentro de la funcion togglePanel es el objeto window completo. mi pregunta es: como podria pasarle los parametros al handler del tool por medio del createDelegate ???? Por favor su ayuda!!!! ... <!-- s:( --><!-- s:( -->
0
Eso esta sucediendo porque cuando haces el createDelegate(this), ese "this" esta haciendo referencia al objeto sobre el cual estas definiendo "westPanel", que por lo que comentas lo estas haciendo en el "global scope", es por eso que te esta referenciando al objeto "window". Por el contrario cuando le asignas una función al handler, el "this" hace referencia al objeto "westPanel" y por lo tanto si pasa la información adecuada. Si deseas utilizar el createDelegate te recomiendo pasarle en lugar del "this" el "westPanel", intentalo y nos comentas. Saludos

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.