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转换生成的代码更长,因为它必须更通用。在此示例中,它可能会生成两个函数,每个绑定表达式一个。

10-08 06:19