Использование форматирования HTML для вывода переменных в Flex / MXML - PullRequest
2 голосов
/ 08 января 2009

Я пытаюсь вывести предложение, содержащее 4 переменные, их значения ободряются с использованием следующего кода:

<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>

Однако, это просто выводит имена переменных, а не их значения. Я уверен, что упускаю что-то простое, но я был бы признателен за любые указатели.

Приветствие.

Ответы [ 2 ]

3 голосов
/ 08 января 2009

Я не думаю, что возможно добавить привязки непосредственно в раздел CDATA, у вас есть несколько вариантов:

  1. Используйте функцию, используя преимущества 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. Или просто закодируйте теги и вставьте их непосредственно в атрибут:
    <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;"/>
    На самом деле это не рекомендуется, так как это делает разметку невероятно трудной для чтения, но вам может сойти с рук это для чего-то маленького.
3 голосов
/ 08 января 2009

Я знаю обходной путь:

Actionscript:

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

MXML:

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