2008-09-19 62 views
4

MXML让你做的,如一些非常非常强大的数据绑定:重复复杂的MXML ActionScript中结合

<mx:Button id="myBtn" label="Buy an {itemName}" visible="{itemName!=null}"/> 

我发现BindingUtils类可以将值绑定到简单的属性,但无论是绑定的上方做这个。是否可以在AS3代码中执行相同的操作,或者是从我的MXML静默地生成许多代码行? 任何人都可以复制上面的纯AS3,从开始:

var myBtn:Button = new Button(); 
myBtn.id="myBtn"; 
??? 

回答

0

相信弯曲产生一个小的匿名函数来处理这个问题。

你可以使用返回ChangeWatcher做类似。你甚至可以在changewatcher调用中创建一个新的匿名函数。

2

做到这一点的方法是使用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更长,因为它必须更通用。在这个例子中,它可能会产生两个函数,每个绑定表达式都有一个函数。

2

您还可以查看自动生成的代码,弯曲,当它编译你的MXML文件中,通过添加-keep参数编译器设置让。您可以通过选择项目属性并查看“Flex编译器”选项来找到您的设置,然后在“其他编译器参数:”下添加“-keep”到已存在的项目。

一旦这样做的Flex将在源文件夹中创建一个“生成”目录和里面你会发现所有德暂时性的,因为编译过程中使用的文件。