2010-07-04 6 views
0

J'essaie de charger des détails de produit dans un composant canvas à partir d'un composant List.Autre méthode de créationcomplète

Chaque fois que l'utilisateur clique sur un produit dans ma liste, les détails du produit seront affichés dans le composant de canevas. Le détail du produit peut contenir null et je veux le vérifier avant d'afficher dans mon composant de toile.

Dans mon composant canvas, j'utilise createcomplete pour vérifier si productDetail == null puis faire quelque chose. Mon problème est que si l'utilisateur clique sur le produit avec le détail non nul la première fois, l'instruction "if (productDetail == null) fait quelque chose" ne fonctionnera pas si l'utilisateur clique sur un détail de produit nul parce que le composant canvas a été créé la première fois que l'utilisateur clique sur un détail de produit non nul.

Je veux vérifier si le productDetail == null chaque fois que l'utilisateur clique sur un produit ... J'espère que j'explique bien ma question et apprécie toute aide.

Mon code ..

AS:

protected function changeHandler(event:IndexChangeEvent):void{ 

    compDetailinfoResult.token=getCompList.compDetail(event.target.selectedItem.productId);//get the product detail clicked by the user 

} 


<s:List dataProvider={productData}/> //when user click a product, 
             //the canvas will show product detail.. 

<comp:productDetail productData={compDetailinfoResult.lastResult} //custom property 
        change="changeHandler"/> //if the product detail is 
       //null, the statement inside 
       //the canvas will check via 
       //creationComplete. but if the 
       //user click the non-null product, 
       //the creationComplete check pass. User clicks a null product again, 
       //the check won't work anymore... 
Code

pour mon composant productDetail:

public var productData:arrayCollection 

protected function canvas1_creationCompleteHandler(event:FlexEvent):void 
{ 
var undefinedBrand:String=dataFromClick.getItemAt(0).brand; 

    if(undefinedBrand==null){ // I want to check every time the user click a List item 
     brand.text="Brand: No Brand"; 
     switchView.enabled=false; 
     displayPictureBig.source="assets/vacant.jpg"; 
    } 
} 

    <s:Panel> 
     <label id="brand" text="productDate.getItemAt(0).brand"/> 
//I want the brand to be displayed.. 
//but if brand is null..it will display No Brand.. 
//see AC above...but createComplete only fire once. 
//Anyway to keep tracking if the brand that is sent by List is null? 
    </s:Panel 

Merci pour l'aide ..

Répondre

1

Je vais avoir quelques problèmes comprendre votre problème. Voulez-vous parler explicitement de Canvas, le conteneur Halo? Ou avez-vous nommé l'un de vos composants personnalisés Canvas? Si c'est la coutume, comme le suggère votre code, que contient le composant? CreationComplete est un événement qui se déclenche une seule fois, lorsque le composant termine l'exécution du processus de création du cycle de vie du composant pour la première fois. Vos extraits de code n'affichent aucune donnée transmise depuis la liste dans le canevas, ce qui pourrait expliquer pourquoi les données sont nulles.

Si quelqu'un sélectionne un nouvel élément dans la liste, l'événement change doit être envoyé. Vous pouvez ajouter un écouteur d'événement à l'événement change et l'utiliser pour mettre à jour les données que vous envoyez dans votre composant de canevas.

+0

Désolé pour la confusion. Je ne colle que du code très basique ici. S'il vous plaît voir le code mis à jour ... – FlyingCat

+0

J'ai les données qui sont envoyées par l'application principale. Le composant productDetail reçoit les données et les affiche. Le détail du produit change en fonction du produit sur lequel l'utilisateur clique dans la liste. Certaines marques de produits sont null et je veux afficher No Brand lorsque l'utilisateur clique sur le produit sans marque ... Merci pour l'aide ...: D – FlyingCat

Questions connexes