Apache flex 如何在htmltext CDATA中进行绑定

Apache flex 如何在htmltext CDATA中进行绑定,apache-flex,actionscript-3,actionscript,cdata,Apache Flex,Actionscript 3,Actionscript,Cdata,我找不到在文本组件的htmlText属性内绑定变量的方法 我希望能够做到以下几点: <mx:Text id="bodyText" styleName="bodyText"> <mx:htmlText > <![CDATA[<img src='assets.OrangeRect' align='left' hspace='0' vspace='4'/> Bonjour {UserData.name} ]]> </mx:

我找不到在文本组件的htmlText属性内绑定变量的方法 我希望能够做到以下几点:

<mx:Text id="bodyText"  styleName="bodyText">
<mx:htmlText >
    <![CDATA[<img src='assets.OrangeRect' align='left' hspace='0' vspace='4'/>    Bonjour {UserData.name} ]]>

    </mx:htmlText>
</mx:Text>


我想绑定UserData.name

我不确定在MXML中如何处理它,但您可以在Actionscript中生成完整字符串:

bodyText.htmlText = "<![CDATA[<img src='assets.OrangeRect' align='left' hspace='0' vspace='4'/>    Bonjour " + UserData.name + " ]]>";
bodyText.htmlText=”“;
“但我仍然想知道是否可以在mxml中直接处理它?特别是如果绑定变量发生更改,我需要在文本组件中更新它。”
希切姆

您可以将属性绑定到函数调用,以便在绑定值更改时,函数调用的结果将用作
htmlText
的值:

<mx:Script>
<![CDATA[

    function sayHello(userName:String):String
    {
        var text:String = "<![CDATA[<img src='assets.OrangeRect' align='left' hspace='0' vspace='4'/>    Bonjour " + userName + " ]]>";
        return text;
    }

]]>
</mx:Script>

<mx:Text id="bodyText" styleName="bodyText" htmlText="{sayHello(UserData.name)}" />


这类似于两者的结合——在MXML中指定绑定,但在脚本部分生成值。

Yup!它起作用了。但我仍然想知道是否可以直接在mxml中处理它?特别是如果绑定变量发生更改,我需要在文本组件中更新它。有人知道怎么做吗?很清楚,但是当绑定值改变时,函数会被触发吗?我不应该听变革事件吗?还是自动完成?谢谢。根据我的经验,绑定到函数确实会在值更改时拾取它,因此您应该可以继续。如果
UserData
类的
name
属性声明为
[Bindable]
,那么只要绑定的属性更改,就会触发sayHello()函数。如果你不确定,试一试,你会发现:)Sly_Cardinal,谢谢你发布你的解决方案。我用过,效果很好。