Comunidad de diseño web y desarrollo en internet online

Ayuda con LinkButton de flex.

Citar            
MensajeEscrito el 23 Feb 2010 12:34 pm
Hola foro,

Tengo un problema que no sé resolver, a ver si alguien me puede dar una ayudita:

Necesito llamar a una función desde un linkButton, en dicha función, debería pasar parámetros que provienen de un ArrayCollection, no he sido capaz, pego la parte de código que creo que puede ser útil para resolver esta questión:

Como vereis, se trata de un accordion en cuyos paneles se muestra información, lo que quisiera es poder enviar en la función "attachVideo" el valor "{rep.currentItem.id}", pero no me funciona, si hago un trace veo que la función recibe la cadena "{rep.currentItem.id}" , me las he ingeniado para usar el label del linkButton, pero no es lo óptimo.


Código Flex :


private function attachVideo(evt:Event):void
{
   videoHolder.addChild(flvPlayback);
   flvPlayback.source=evt.currentTarget.label;
}

<mx:Accordion x="10" y="350" width="340" height="350" >
      <mx:Repeater id="rep" dataProvider="{ponentes}">
         <mx:VBox width="100%" height="100%"
            paddingLeft="10" paddingTop="10"
            label="{rep.currentItem.nombre}">
            <mx:Image source="{rep.currentItem.foto}"/>
            <mx:Label text="{rep.currentItem.id}" />
            <mx:Label text="{rep.currentItem.nombre}" />
            <mx:Label text="{rep.currentItem.centro}" />
            <mx:Label text="{rep.currentItem.duracion}" />
            <mx:LinkButton id="link" label="{rep.currentItem.video}"  click="attachVideo(event);"/>
         </mx:VBox>
      </mx:Repeater>
</mx:Accordion>


Agradecido

Por onTilt

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2010 02:57 pm
Por que no usas

click="{attachVideo(rep.currentItem.id)}"/>

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2010 07:03 pm
Hola Jorge, gracias por responder.

yo había provado con:

Código Flex :

 click="attachVideo('{rep.currentItem.id}')"
y nada, tampoco funciona como sugieres ... ¿hay alguna otra posibilidad?

Saludos y gracias de nuevo.

Por onTilt

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2010 07:19 pm
Si está mostrando el ID correctamente en el label, dale id a la etiqueta y capturalo de allí

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Feb 2010 10:56 am
Hola de nuevo, he resuelto el tema y lo posteo por si puede ser útil.

Lo cierto es que al final he hallado la solución un poco por casualidad un poco por lógica. Lo cierto es que en la función que llama el linkButton necesitaba pasar mas de un argumento (en el ejemplo simplifiqué al máximo para más claridad). Acostumbrado a programar con AS, he pensado como lo haría; una solución posible, sería añadir propiedades al componente, así pues, he creado un componente linkButton personalizado con las propiedades que necesito y de esta forma, cuando llamo a mi función, puedo pasarlas sin problema.

Dejo un ejemplo (y de paso si me podeis decir si lo veis correcto o me he complicado la vida, tened en cuenta que llevo muy poco usando flex y no tengo mucha destreza aún):

Un saludo.

Mi componente personalizado:

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml" name="myLinkButton" styleName="myStyle">

    <mx:Style>
    .myStyle {
      upIcon: Embed(source="assets/skins/left panel accordion/control_play.png");
      overIcon: Embed(source="assets/skins/left panel accordion/control_play.png");
      downIcon: Embed(source="assets/skins/left panel accordion/control_play.png");
            }
    </mx:Style>
   
   <mx:Script>
   <![CDATA[
   public var _id:String;
   public var _video:String;
   ]]>
   </mx:Script>

</mx:LinkButton>


El código para llamar a mi función

Código Flex :

   
<MyComp:myLinkButton  
label="{rep.currentItem.titulo}" 
_video="{rep.currentItem.video}" 
_id="{rep.currentItem.id}" click="prueba(event)"/>


Mi función

Código Flex :

private function prueba(e:Event):void
{
   Alert.show(e.target._id + " "+ e.target._video)
}

Por onTilt

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2010 01:30 pm
Ciertamente es una buena solución, pero me llama la atención que no se pueda hacer por el camino mas simple ... en fin, si tengo tiempo intentaré reproducir lo anterior

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2010 07:25 am
Si Jorge, tienes razón, pero te aseguro que agoté esa via.

Gracias por todo.

Por onTilt

24 de clabLevel



 

firefox

 

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