[Bindable]绑定和[Bindable("eventname")]绑定的区别

在进行绑定的时候需要注意一点为了降低复杂度来提高效率,在复杂关系的[Bindable]会被忽略。
下面我主要说一下[Bindable]绑定和[Bindable("eventname")]绑定的区别。
as代码: 
  1. //先说一下[Bindable]这个绑定  
  2.   
  3. private var _text:String "" 
  4.           
  5. [Bindable]  
  6. public function get text():String  
  7.     trace("执行了get text方法");  
  8.     return _text;  
  9.  
  10.   
  11. public function set text(value:String):void  
  12.     if(value)  
  13.         _text value;  
  14.         trace("_text属性值改变了");  
  15.      
  16.  
  17.   
  18. //这样的绑定在编译的时候编译器会自己判断匹配那些属性之间需要建立绑定关系,  
  19. //如果一旦绑定关系比较复杂的话效率就会下降,而且有些复杂关系的绑定会被忽略,  
  20. //这里我推荐使用自定义事件来进行绑定。  
  21.   
  22. //下来说一下[Bindable(eventname)]自定义事件绑定  
  23.   
  24. private var _text:String "" 
  25.           
  26. [Bindable(event "textChanged")]  
  27. public function get text():String  
  28.     trace("执行了get text方法");  
  29.     return _text;  
  30.  
  31.   
  32. public function set text(value:String):void  
  33.     if(value)  
  34.         _text value;  
  35.         trace("_text属性值改变了");  
  36.         //这里需要注意一下必须手动dispatch 一个event,这个就是为了触发一下绑定text  
  37.         dispatchEvent(new Event("textChanged"));  
  38.      
  39.  
 
为什么自定义事件的绑定效率会比前者好呢?因为在编译器编译的时候会明确的知道这个属性绑定eventname这个事件,一旦eventname这个事件分发出来了会立即查找对应这个事件的属性或者方法随之调用,
这也说明了为什么[Bindable]这中方式的绑定不用自己dispatch一个event,因为这些判断和分发事件和什么时候分发事件都是flex帮我们处理了(注意:如果属性值的改变与原来相同,flex并不传递这个事件或更新属性,
而自定义事件的绑定只要触发分发了事件就会进行绑定属性或者方法的调用)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值