FLEX4 中ArrayCollection的addItem增加的元素是复杂类,元素存在,通过ArrayCollection访问却是undefind

FLEX4 中ArrayCollection的addItem增加的元素是复杂类,元素存在,通过ArrayCollection访问却是undefind,第1张

ArrayCollection需要通过.getItemAt()方法来获取里面的元素,不能像Array那样直接通过[index],所以你的trace代码应该写为:trace(linePositon.getItemAt(linePositon.length-1).from)。

本人认为这两个除了一些方法上的不同以为,最主要的不同之处就是绑定了,arraycollection这个里面的内容变化了会传递进入绑定的组建里面,而array不会,所以在组建绑定的时候都是用arraycollection的。你说的显示不出是说trace不出东西么? 这个是两个类 tostring方法的问题,我认为。

1.如果这个ArrayCollection 不是用于视图组建中你可以利用ArrayCollection 的筛选方法filterFunction:形如

private var dataTypeList:ArrayCollection = new ArrayCollection(

[{name:"",value:""},

{name:"文本",value:"01"},

{name:"数字",value:"02"},

{name:"布尔",value:"03"},

{name:"日期",value:"04"}]

)

dataTypeList.filterFunction=find

private function find(item:Object):Boolean

{

trace(item.name)//你可以匹配你要查找的name,并得到value

//这个方法一定要有返回值,因为它关系到视图的显示,本来它是用来刷新视图数据

}

2.如果ArrayCollection 绑定到了视图组建中,如List,dataGrid等数据显示组件上,一般是可以通过组建的selectedItem或getItem等属性取得一个Object,这个Object其实就是ArrayCollection 中{name:"文本",value:"01"},{name:"数字",value:"02"},{name:"布尔",value:"03"},,通过这个Object你可以取到你定义的的所有属性

ArrayCollection 一般都是用于直接绑定视图的,不会单独用来存储数据,根据你说的情况,我想应该是第二种情况,点到某个Object后,需要取得它的一些属性值


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7931559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存