Comunidad de diseño web y desarrollo en internet online

Referencias de variables globales con funciones anónimas

Citar            
MensajeEscrito el 12 Ene 2006 03:22 am
Hola que tal

Alguien sería tan amable de orientarme sobre como hacer funcionar dentro de un objeto una referencia a sus atributos desde una funcion anónima que se define dentro del mismo objeto, les muestro como es en lo siguiente:

class Busqueda{
...
var componentes:Array;
var campos:Array;
...
public Busqueda(...
...
public function limpiarFormulario() {
var click_limpiar:Object = new Object();
click_limpiar.click = function() {
for (var i = 0; i<this.campo.length; i++) {
trace(i);
if (campo[i].dameTipo() == "TextInput") {
this.componentes[i][CAMPO].text = " ";
} else if (campo[i].dameTipo() == "ComboBox") {
this.componentes[i][CAMPO].selectedIndex = 0;
}
}
};
componentes[LIMPIAR].addEventListener("click", click_limpiar);
}
...
}//fin del clase Busqueda

Bien de la manera anterior he intentando y no ha funcionado pues no puede hacer referencia a los arreglos de campo ni de componentes, agradezco de antemano su ayuda,

Saludos

Por lrazo

3 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Ene 2006 05:49 am
umm...ahi te vendria muy bien usar un patron de dise;o (especificamente el MVC) para tu aplicacion....

de todas formas...no creo que sea bueno definir un metodo dentro de otro metodo...se puede llegar a hacer eso, pero en situaciones especiales.
Yo mas bien te recomendaria hacer una clase especifica para tu boton que limpiaria...o sea...que sirva para limpiar componentes, pero tu le especificas que componentes debe limpiar y cual es el boton que accionaria todo..... algo asi se me ocurre (aunque no lo he probado):

Código :

class ClearButton extends MovieClip {
   //
   private var _bClear:mx.controls.Button;
   private var _components:Array;
   private var _listener:Object;
   public var click:Function;
   //
   function ClearButton(b:mx.controls.Button, components:Array) {
      this._bClear = b;
      this._listener = new Object();
      this._listener.creator = this;
      this._listener.click = this._clean;
      this._bClear.addEventListener(this._listener, "click");
   }
   //
   private function _clean() {
      //Aqui con esta funcion puedes hacer que se pueda usar el evento click por default 
      //o que el usuario defina el suyo propio
      if (this.creator.click) {
         this.creator.click(this.creator.components);
      } else {
         trace(this.creator.components);
         //codigo para limpiar componentes que sea por default..bla bla bla
         //para referirte a los componentes es con this.creator.components  
      }
   }
   //
   public function set components(components:Array) {
      this._components = components;
   }
   public function get components():Array {
      return this._components;
   }
}

Por tangamampilia

.GAIA Developer

961 de clabLevel


6 articulos

Genero:Masculino   Anime Bloggers

México, D.F.

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.