Flex 自定义组件自定义属性的动态更新
效果预览:
前天有群友问到在Flex里自定义了一个组件,然后又在该组件里public了一个属性绑定数据不更新问题,然后在主程的mxml里声明命名空间后,用标签形式把自定义的属生用{}绑定一个字符变量可以实时更新,但由AS生成的自定义组件的属性就不能实时更新.经过乱翻一些资料可以用BindingUtils类的bindProperty方法实现由AS生成的组件自定义属性更新!当按提交时,会同时更新两个组件的flag属性值
参数:
bindProperty(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false)
其实我们这样用:
bindProperty(目标对象, 目标对象属性, 数据源对象, 数据源对象属性)
DynamicAttr.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" xmlns:Jian="*">
- <mx:Script>
- <![CDATA[
- import mx.binding.utils.BindingUtils;
- [Bindable]
- public var attr:String = Math.random().toString();
- private function init():void
- {
- var temp:LabelExt = new LabelExt();
- temp.x = 150;
- temp.y = 50;
- temp.setStyle("borderStyle", "solid");
- temp.flag = attr;
- panel.addChild(temp);
- BindingUtils.bindProperty(temp, "flag", this, "attr");
- }
- private function chang():void
- {
- attr = Math.random().toString();
- }
- ]]>
- </mx:Script>
- <mx:Panel id="panel" title="Flex 自定义组件自定义属性动态更新"
- top="10" left="10" right="10" bottom="10" layout="absolute">
- <mx:Label text="由AS创建的组件:" x="50" y="50" />
- <mx:Button x="340" y="90" label="Submit" click="chang()" />
- <mx:Label text="自定义命名的标签创建:" x="300" y="50" />
- <Jian:LabelExt id="labels" flag="{attr}" x="430" y="50" borderStyle="solid" />
- </mx:Panel>
- </mx:Application>
LabelExt.mxml 自定义组件
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Box xmlns:mx="http://www.adobe.com/2006/mxml">
- <mx:Script>
- <![CDATA[
- [Bindable]
- public var flag:String;
- ]]>
- </mx:Script>
- <mx:Label text="{flag}"/>
- </mx:Box>
发表于: 02-10-10 · 1 评论 » 1,670 次阅读
确实是不错~~~~~~
九月 1st, 2010 at 15:17