使用HTML格式在Flex / MXML中输出变量

时间:2009-01-08 14:11:30

标签: flex mxml

我正在尝试输出一个包含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 个答案:

答案 0 :(得分:3)

我知道一种解决方法:

的ActionScript:

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

MXML:

<Text htmlText="{str}" />

答案 1 :(得分:3)

我认为不可能直接在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;"/>
    这不是真正推荐的,因为它使标记非常难以阅读,但你可能会因为这样的小事而逃脱它。