关于ArrayCollction中单个项目的更新
通常,我认为只要绑定了一个ArrayCollection,它内部的值更新时,被绑定组件中的数据都会自动更新。但是下面的测试说明并非如此。
如果更新了ArrayCollection中某个项目的值(并不是通过AddItem等方法更新这个项目,而是直接更新这个项目中的某个值),那么虽然ArrayCollection中的值更新了,但是被绑定的组件并不会接收到更新通知。这时,就要用itemUpdated方法来发送更新事件。
看下面的例子:
当输入新的site值并单击“改变rong的site”按钮时,虽然已经改变了 _list
的值,但是dg并没有收到通知,只有使用 _list.itemUpdated
方法发出更新事件,才会更新dg中的显示。
代码:
1<?xml version="1.0" encoding="utf-8"?>
2<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="500" height="160">
3 <mx:ArrayCollection id="_list">
4 <mx:source>
5 <mx:Object index="1" name='zrong' site='cai.mediasky.cn'/>
6 <mx:Object index="2" name='orphen' site='www.98pc.net'/>
7 </mx:source>
8 </mx:ArrayCollection>
9 <mx:DataGrid id="dg" dataProvider="{_list}" width="440" height="100"/>
10 <mx:HBox>
11 <mx:Label text="输入新Site:" color="#ffff00" fontWeight="bold"/>
12 <mx:TextInput id="ti" width="100"/>
13 <mx:Button label="改变zrong的site" click="_list[0].site=ti.text"/>
14 <mx:Button label="itemUpdate" click="_list.itemUpdated(_list[0])"/>
15 </mx:HBox>
16</mx:Application>
- 文章ID:539
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/update-single-item-in-arraycollection/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。