Pregunta

¿Es posible, a través de algún tipo de metadatos presumiblemente, forzar que se establezca una propiedad de un objeto? Tenemos una serie de componentes no visuales que simplemente no hacen nada a menos que se establezcan una o más propiedades, como:

<ToolTip target="{this}">
    <mx:Image source="foo.png" />
</ToolTip>

En este caso, sería bueno marcar la propiedad de destino según sea necesario, ya que no tiene sentido nunca configurarla. Esto no es un gran problema ya que es fácil de documentar, pero sería bueno eliminar al menos algunas vueltas de depuración haciendo que el compilador le informe al desarrollador de su error.

No deseamos que esta etiqueta sea redundante de ninguna manera, lo que podría haberse resuelto (en este caso) simplemente haciendo que el componente ToolTip sea un componente UICom y use la propiedad padre. Pero por un lado, esto agrega una sobrecarga innecesaria y en otros casos simplemente no es apropiado:

<Button id="btn" label="Foo" />
<ToolTip target="{btn}">
    <mx:Image source="foo.png" />
</ToolTip>

Entonces, ¿son posibles los atributos obligatorios de mxml?

¿Fue útil?

Solución

Hay una solución, pero no es tan simple como usar metadatos. Simplemente haga que sus componentes no visuales implementen la interfaz IMXMLObject. La interfaz tiene un solo método, "inicializado". La implementación de la interfaz le permite inspeccionar el objeto como se inicializa a través de MXML.

Por lo tanto ...

public function initialized(document:Object, id:String):void
{
  if ( target == null ) throw new Error( "You must supply an argument to target!" );
} 

Sería bueno tener el tiempo de compilación comprobando, pero esto funciona decentemente.

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