HTMLフォーマットを使用してFlex / MXMLで変数を出力する
-
05-07-2019 - |
質問
次のコードを使用して値が太字になっている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>
ただし、これは値ではなく変数名を出力するだけです。単純なものが欠けていると確信していますが、ポインタをいただければ幸いです。
乾杯。
解決
回避策を知っています:
Actionscript:
private var variable:String = "Variable String";
private var str:String = "<i><b>" + Variable + "</b></i>";
Mxml:
<Text htmlText="{str}" />
他のヒント
そのようなCDATAセクションにバインディングを直接追加することはできないと思いますが、いくつかのオプションがあります:
- 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>"; }
- または、単にタグをエンコードして、属性に直接挿入します。
マークアップを非常に読みにくくするため、これは実際にはお勧めしませんが、このような小さなものでうまくいくかもしれません。<mx:Text id="myText" width="100%" y="307" htmlText="Showing data from <b>{labelStartTime.text} {labelStartDate.text}</b> to <b>{labelEndTime.text} {labelEndDate.text}</b>"/>
所属していません StackOverflow