Rob*_*ert 4 flash actionscript-3 dataprovider
我正在使用一个数组来填充DataProvider,我用它来填充列表组件.像这样:
var myDataProvider = new DataProvider(this.myArray);
this['list'].dataProvider = myDataProvider;
Run Code Online (Sandbox Code Playgroud)
当对数组进行更改时,我想告诉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
Run Code Online (Sandbox Code Playgroud)
更好的是,如果您将该DataProvider实例传递给Flex组件,通常(几乎总是)只能传递它ArrayCollection.但是,你没有给我足够的背景信息来确定这一点.
这里有一些有用的链接:
编辑:我的错,我确实假设你正在使用Flex进行上述操作.
在普通的旧AS3中,主体是相同的.该Array不会调度事件,但DataProvider确实.如果您可以对dataProvider本身进行更改,那么您就可以开始了.
在AS3 DataProvider类提供了一堆的数据处理方法,如addItem,removeItem,replaceItem,replaceItemAt,只是举例.
因此,它基本上归结为您需要对源数组进行哪些更改.通常情况下,你可以通过DataProvider.