MXML使您可以执行一些非常强大的数据绑定,例如:
<mx:Button id="myBtn" label="Buy an {itemName}" visible="{itemName!=null}"/>
我发现BindingUtils类可以将值绑定到简单属性,但是上面的绑定都没有这样做。是否可以在AS3代码中执行相同操作,或者Flex是否通过我的MXML静默生成多行代码?
任何人都可以在纯AS3中复制上述内容,从以下位置开始:
var myBtn:Button = new Button();
myBtn.id="myBtn";
???
最佳答案
做到这一点的方法是使用bindSetter
。当示例中的MXML在编译之前转换为ActionScript时,这也是在后台完成的。
// assuming the itemName property is defined on this:
BindingUtils.bindSetter(itemNameChanged, this, ["itemName"]);
// ...
private function itemNameChanged( newValue : String ) : void {
myBtn.label = newValue;
myBtn.visible = newValue != null;
}
...除了MXML到ActionScript转换生成的代码更长,因为它必须更通用。在此示例中,它可能会生成两个函数,每个绑定表达式一个。