Puede alguien explicar este escollo unión a mí común? (Usando el nombre del evento enlazable mal)

StackOverflow https://stackoverflow.com/questions/4050013

  •  27-09-2019
  •  | 
  •  

Pregunta

Me refiero a este sitio texto del enlace

  

Usando el nombre del evento en el mal   etiqueta [Bindable] puede hacer que su   aplicación que no se unía a su propiedad,   y ni siquiera saber por qué. Cuando   se utiliza la etiqueta [Bindable] con una   nombre de encargo, el siguiente ejemplo miradas   como una buena idea:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event=EVENT_CHANGED_CONST)] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}
  

El código anterior asigna un estáticas   propiedad al nombre del evento, y luego   utiliza la misma asignación a despacho   el evento. Sin embargo, cuando el valor   cambia, la unión no aparece   trabajar. La razón es que el evento   nombre será EVENT_CHANGED_CONST y   no el valor de la variable.

     

El código debe haber sido escrito como   siguiente:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event="eventChangedConst")] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

Estoy de acuerdo, el mal ejemplo se ve como una idea buena y lo haría de esa manera porque creo que es la manera correcta y evita la posibilidad de un error de escritura. ¿Por qué el nombre de la constante en lugar de su valor? Sin duda, esto no puede estar bien?

Agradezco sus ideas

¿Fue útil?

Solución

Debido a que el compilador de Flex estándar no es tan inteligente, a veces ... y me siento su dolor! Me he quejado de este problema exacto más de un par de veces.

Si no recuerdo mal, es porque el compilador hace varias pasadas. Uno de los primeros pases cambia el código de metadatos en AS. En este punto en el compilador no ha analizado el resto del código AS, así que no es capaz de analizar constantes o referencias a variables estáticas en otros archivos.

Lo único que puedo sugerir es registrarse con el Adobe JIRA, votar por el fallo, y la esperanza que corrige el compilador en 4,5 brindar algo de alivio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top