flash – 如何告知DataProvider更新?
我正在使用一个数组来填充DataProvider,我用它来填充列表组件.像这样:
var myDataProvider = new DataProvider(this.myArray); this['list'].dataProvider = myDataProvider; 当对数组进行更改时,我想告诉DataProvider更新,以便这些更改将反映在列表组件中.如果有一种方法可以告诉DataProvider监听数组中的更改并自行更新,那将是很好的,但我会想办法手动更新它. 我可以使用新的DataProvider替换DataProvider,但随后列表将丢失其选择.我想我可以浏览DataProvider并比较和修改每个条目以使其与数组匹配,但这似乎太麻烦了.有没有办法告诉DataProvider更新以匹配数组? 编辑:我正在寻找一种在Flash中执行此操作的方法,而不是Flex. 解决方法
数组在AS 3中不可绑定;他们不会自己调度/触发数据绑定事件.
如果你正在使用Flex,你可以将数组包装在一个可绑定的ArrayCollection中,并操纵ArrayCollection而不是Array,一切都应该自动按你的意愿工作. 所以,在实践中: var myAC:ArrayCollection = new ArrayCollection(myArray); var myDP = new DataProvider(myAC); myAC[0] = 'changing the array!'; // will be reflected in the dataProvider 更好的是,如果您将DataProvider实例传递给Flex组件,通常(几乎总是)只能传递ArrayCollection.但是,你没有给我足够的背景信息来确定这一点. 这里有一些有用的链接: > Binding to functions,Objects,and Arrays 编辑:我的错,我确实假设你正在使用Flex进行上述操作. 在普通的旧AS3中,主体是相同的. Array不会调度事件,但 AS3 DataProvider类提供了许多用于数据操作的方法,例如addItem,removeItem,replaceItem,replaceItemAt. 因此,它基本上归结为您需要对源数组进行哪些更改.通常,您可以通过DataProvider完成它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |