关于ArrayCollction中单个项目的更新

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:关于ArrayCollction中单个项目的更新
  • 本文链接:http://zengrong.net/post/539.htm

通常,我认为只要绑定了一个ArrayCollection,它内部的值更新时,被绑定组件中的数据都会自动更新。但是下面的测试说明并非如此。

如果更新了ArrayCollection中某个项目的值(并不是通过AddItem等方法更新这个项目,而是直接更新这个项目中的某个值),那么虽然ArrayCollection中的值更新了,但是被绑定的组件并不会接收到更新通知。这时,就要用itemUpdated方法来发送更新事件。

看下面的例子:

当输入新的site值并单击“改变rong的site”按钮时,虽然已经改变了 _list 的值,但是dg并没有收到通知,只有使用 _list.itemUpdated 方法发出更新事件,才会更新dg中的显示。

代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="500" height="160">
    <mx:ArrayCollection id="_list">
        <mx:source>
            <mx:Object index="1" name='zrong' site='cai.mediasky.cn'/>
            <mx:Object index="2" name='orphen' site='www.98pc.net'/>
        </mx:source>
    </mx:ArrayCollection>
    <mx:DataGrid id="dg" dataProvider="{_list}" width="440" height="100"/>
    <mx:HBox>
        <mx:Label text="输入新Site:" color="#ffff00" fontWeight="bold"/>
        <mx:TextInput id="ti" width="100"/>
        <mx:Button label="改变zrong的site" click="_list[0].site=ti.text"/>
        <mx:Button label="itemUpdate" click="_list.itemUpdated(_list[0])"/>
    </mx:HBox>  
</mx:Application>

  itemUpdated源文件 (1.3 KiB, 1,033 hits)