Использование форматирования HTML для вывода переменных в 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 ответа
Решение
Я знаю обходной путь:
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>"/>