質問

次のコードを使用して値が太字になっている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セクションにバインディングを直接追加することはできないと思いますが、いくつかのオプションがあります:

  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;"/>
    マークアップを非常に読みにくくするため、これは実際にはお勧めしませんが、このような小さなものでうまくいくかもしれません。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top