2009-11-02 4 views
0

J'ai une liste de complaint avec un itemrenderer extrunal. Mon itemrender est un module que je voudrais charger lors de l'exécution.Comment charger des modules flex en tant que liste d'itemrenderers avec une étiquette de moduleloader?

J'ai utilisé la balise moduleloader mais elle n'affiche rien. Si je n'utilise pas le tag moduleloader mais le <modulename> au lieu de <productsView:menuBtn> il affiche le contenu.

Est-ce que quelqu'un sait comment je devrais faire cela?

fichier d'application avec le composant de liste

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="vertical" 
initialize="catagories.send();"> 

<mx:HTTPService id="catagories" url="data/products.xml" 
      resultFormat="e4x"/> 

<mx:XMLListCollection id="myXC" 
     source="{catagories.lastResult.product}"/> 

<mx:List id="r" dataProvider="{myXC}" 
    width="185" height="100%" 
    backgroundAlpha="0" 
    paddingTop="0" 
    paddingBottom="0" 
    paddingLeft="0" 
    paddingRight="0" 
    borderStyle="none"> 
    <mx:itemRenderer> 
     <mx:Component> 
     <mx:ModuleLoader url="productsView/menuBtn.swf"/> 
     </mx:Component> 
    </mx:itemRenderer> 
    </mx:List> 
</mx:Application> 

mon module

<?xml version="1.0" encoding="utf-8"?> 
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="horizontal" 
width="185" 
    paddingLeft="3" 
paddingRight="3" 
paddingTop="3" 
paddingBottom="3" 
backgroundColor="#FFFFFF" 
backgroundAlpha="0.8" 
borderStyle="solid"> 

<mx:Image id="labelIcon" source="{data.icon}"/> 
<mx:Label id="catagory" text="{data.catagory}"/> 
</mx:Module> 

Répondre

0

Le problème peut être que vous ne pouvez pas charger plusieurs instances d'un module. Le moyen de contourner ce problème consiste à modifier l'URL pour que Flex pense que chaque appel est unique.

Essayez de remplacer le code ModuleLoader avec

<mx:ModuleLoader url="{'module.swf?' + Math.round(Math.random() * 10)}"/>

Questions connexes