【发布时间】:2010-06-14 05:13:20
【问题描述】:
当 Flex 看到这样的事情时:
<mx:Label text="Hello {MyVar} World!"/>
它必须以某种方式将其转换为 ActionScript。但是如果我需要在运行时做类似的事情怎么办。我怎样才能动态地完成什么?当我不知道绑定模板的内容时。
在 ActionScript 中,它需要它看起来像这样某种东西:
public function CustomDynamicBinding(StringToBind:String):Label {
// *EXAMPLES* Of StringToBind:
// "Hello {MyVar} World!"
// "Product: {name} ${price}.00"
// "{data.label}, {data.description}"
// I've Written It This Way Because I DO NOT KNOW The Exact Text To Be Bound At Design Time.
[Bindable]
var Lab:Label=new Label();
Lab.text=???
return(Lab);
}
我怎样才能完成这种“动态”绑定...直到运行时我才不知道“StringToBind”的值?出于这个问题的目的,我们可以假设我确实知道“StringToBind”中提到的任何变量都保证在运行时存在。
我已经意识到有更直接的方法可以静态地完成这个确切的事情,并且只使用 Flex/MXML。这对我的项目很重要,但我了解如何在没有 MXML 的情况下实现这一点。
这样做: lab.text = stringToBind.replace("{myVar}", str);
将不起作用,因为这只是将“{myVar}”的值(甚至可能不是“stringToBind”中引用的变量!!)分配给标签,并且不考虑何时以及是否 myVar变化!我不需要以某种方式使用 bindProperty 之类的东西吗?
【问题讨论】:
-
约书亚,我希望这是你想要的,或多或少:stackoverflow.com/questions/3081229/…
标签: apache-flex flash actionscript-3 actionscript air