Flex中的大部分组件(component)和所有的容器(container)都实现了IDataRenderer 接口,从而提供默认的数据绑定功能。

IDataRenderer接口的一般实现方式如下:

IdataRenderer:组件默认的数据绑定   // Internal variable for the property value.
IdataRenderer:组件默认的数据绑定
   private var _data:Object;
  
IdataRenderer:组件默认的数据绑定    
// Make the data property bindable.
IdataRenderer:组件默认的数据绑定
    [Bindable("dataChange")]
IdataRenderer:组件默认的数据绑定
IdataRenderer:组件默认的数据绑定    
// Define the getter method.
    }

 
可以看出,当data发生变化时,组件会dispatch dataChange事件。

当我们使用组件(包括自定义组件)时,可以用如下的方法:
DataChangeTest.mxml

IdataRenderer:组件默认的数据绑定<?xml version="1.0" encoding="utf-8"?>
IdataRenderer:组件默认的数据绑定
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="test()">
IdataRenderer:组件默认的数据绑定
<mx:Script>
IdataRenderer:组件默认的数据绑定    
<![CDATA[
IdataRenderer:组件默认的数据绑定        private function test():void{
IdataRenderer:组件默认的数据绑定            var comp1:MyComponent = new MyComponent();
IdataRenderer:组件默认的数据绑定            var comp2:MyComponent = new MyComponent();
IdataRenderer:组件默认的数据绑定            comp1.data = {label:"comp1",border:3};
IdataRenderer:组件默认的数据绑定            comp2.data = {label:"comp2",border:1};
IdataRenderer:组件默认的数据绑定            comp1.x = 100;
IdataRenderer:组件默认的数据绑定            comp1.y = 200;
IdataRenderer:组件默认的数据绑定            comp2.x = 300;
IdataRenderer:组件默认的数据绑定            comp2.y = 400;
IdataRenderer:组件默认的数据绑定            
IdataRenderer:组件默认的数据绑定            this.addChild(comp1);
IdataRenderer:组件默认的数据绑定            this.addChild(comp2);
IdataRenderer:组件默认的数据绑定        }
IdataRenderer:组件默认的数据绑定    
]]>
IdataRenderer:组件默认的数据绑定
</mx:Script>
IdataRenderer:组件默认的数据绑定    
IdataRenderer:组件默认的数据绑定
</mx:Application>
IdataRenderer:组件默认的数据绑定


自定义的组件MyComponent.mxml

IdataRenderer:组件默认的数据绑定<?xml version="1.0" encoding="utf-8"?>
IdataRenderer:组件默认的数据绑定
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="80" height="50">
IdataRenderer:组件默认的数据绑定    
<mx:Label id="testTxt" width="100%" text="{data.label+':'+data.border}"/>
IdataRenderer:组件默认的数据绑定
</mx:Canvas>
IdataRenderer:组件默认的数据绑定


如果我们要在自定义的MyComponent中再增加子组件ChildComp.mxml

IdataRenderer:组件默认的数据绑定<?xml version="1.0" encoding="utf-8"?>
IdataRenderer:组件默认的数据绑定
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="40" height="40"
IdataRenderer:组件默认的数据绑定     borderColor
="#ff0000" borderStyle="solid"  borderThickness="{data as Number}">
IdataRenderer:组件默认的数据绑定
</mx:Canvas>
IdataRenderer:组件默认的数据绑定


可以将MyComponent改为:

IdataRenderer:组件默认的数据绑定<?xml version="1.0" encoding="utf-8"?>
IdataRenderer:组件默认的数据绑定
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="80" height="50"  xmlns:local="*">
IdataRenderer:组件默认的数据绑定     
<local:ChildComp id="child" data="{data.border}"/>
IdataRenderer:组件默认的数据绑定    
<mx:Label id="testTxt" width="100%" text="{data.label+':'+data.border}"/>
IdataRenderer:组件默认的数据绑定
</mx:Canvas>
IdataRenderer:组件默认的数据绑定


注意:在FlexBuilder的mxml代码提示中,并不出现data属性,但是确实可以这样使用。

相关文章: