Flex学习笔记8——数据绑定

为模型和视图层传递数据提供了一种快捷的机制。以下场景不适用:

         1)界面需要按严格顺序更新;

         2)只有某些特定时期才需要告知属性的变化。

使用方法

1.       {} :返回值类型必须与目的属性兼容,可以使用有返回值的函数、字符串连接符、算数和逻辑表达式。常用于定义视图上的控件属性随模型数据的变化而变化。

2.       <mx:Binding> source属性可以使用 {} 包含表达式,用于1)模型上的数据随着控件的输入数据变化而变化。 2)建立同一目的属性与多个不同源属性的绑定关系

3.       BindingUtils:  动态定义数据绑定,但很少使用。

定义方式

源使用[Bindable]定义,产生propertyChangeEvent 事件

也可以定义事件的名称,如[Bindable(event=”fooChanged”)] ,这样需要自己创建或发出该事件才能触发事件绑定(不推荐)。

属性

    Public类:全部的public变量、具有getset的属性

函数

a)       可绑定的属性作为函数的参数,实例如下:

          <mx:TextArea text=”{usdFormater.format(a)}”>

b)       带返回值的函数作为数据源

常用于某一个属性对外只提供get方法,该值在类内被改变时,调用地方能通过get方法取得新值

private var _contacts:ArrayCollection;

[Bindable(event="contactsChanged")]

public function get contacts():ArrayCollection

{

return _contacts;

}

// Stores given contacts and the current search keyword

public function saveContacts( list:ArrayCollection, searchKey:String ):void

{

_contacts = list;

//trigger binding by dispatching change event

dispatchEvent( new Event( "contactsChanged" ) );

lastSearch = searchKey;

}


 

对象

           如果想让对象绑定起作用,需要保证对象和对象所属类都绑定,如

             Private var foo:MyObject;   {foo.name}如果要起作用,则MyObjectname属性和foo对象都要绑定

           Object类的属性绑定:使用ObjectProxy对象,如Object info=new ObjectProxy();

数组

         使用ArrayCollection作为绑定源,且使用 getItemAt访问数据元素,如下:

[Binable]

Public var myAC:ArrayCollection=new ArrayCollection([1,3,5]);

<mx:Text id=”text2” text=”{myAC.getItemAt(0)}”>  //如果使用myAC[0]则只在引用或数组引用更新时触发,而0的元素变化时不会触发

发生时机

         源属性被改变

         源对象发出initialize事件时

         调用executeBinding()方法

可以使用mx.binding.utils.ChangeWatcher观察数据绑定,观察者在数据绑定发生时,会激活一个事件,如 ChangeWatcher.watch(textarea,”text”, 监听函数)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值