2009-01-08 6 views
2

Je suis en train de sortir une phrase contenant 4 variables, avec leurs valeurs enhardis en utilisant le code suivant:utilisant un formatage HTML à des variables de sortie dans Flex/MXML

<mx:Text width="100%" y="307"> 
    <mx:htmlText> 
     <![CDATA[Showing data from <b>{labelStartTime.text} {labelStartDate.text}</b> to <b>{labelEndTime.text} {labelEndDate.text}</b>]]> 
    </mx:htmlText> 
</mx:Text> 

Cependant, ce produit juste les noms de variables, plutôt que leurs valeurs. Je suis sûr qu'il me manque quelque chose de simple, mais j'apprécierais n'importe quel pointeur.

Cheers.

Répondre

3

Je sais d'une solution de contournement:

Actionscript:

private var variable:String = "Variable String"; 
private var str:String = "<i><b>" + Variable + "</b></i>"; 

Mxml:

<Text htmlText="{str}" /> 
3

Je ne pense pas qu'il est possible d'ajouter des liaisons directement dans une section CDATA comme ça, vous avez cependant quelques options:

  1. Utilisez une fonction, en tirant parti de BindingUtils.bindSetter:
    import mx.binding.utils.BindingUtils; 
    //called on creationComplete 
    private function init():void 
    { 
        BindingUtils.bindSetter(setHtmlText, labelStartTime, "text"); 
        BindingUtils.bindSetter(setHtmlText, labelStartDate, "text"); 
        BindingUtils.bindSetter(setHtmlText, labelEndTime, "text"); 
        BindingUtils.bindSetter(setHtmlText, labelEndDate, "text"); 
    } 
    
    private function setHtmlText(val:String):void 
    { 
        myText.htmlText = "Showing data from <b>" + 
             labelStartTime.text + " " + 
             labelStartDate.text + "</b> to <b>" + 
             labelEndTime.text + " " + 
             labelEndDate.text + "</b>"; 
    }
  2. Ou simplement encoder les balises et les insérer directement dans l'attribut:
    <mx:Text id="myText" width="100%" y="307" 
         htmlText="Showing data from &lt;b&gt;{labelStartTime.text} {labelStartDate.text}&lt;/b&gt; to &lt;b&gt;{labelEndTime.text} {labelEndDate.text}&lt;/b&gt;"/>
    Ce n'est pas vraiment recommandée car elle rend le balisage incroyablement difficile à lire, mais vous pourriez vous en sortir pour quelque chose de petit comme ça.
Questions connexes