加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何告知DataProvider更新?

发布时间:2020-12-15 07:25:26 所属栏目:百科 来源:网络整理
导读:我正在使用一个数组来填充DataProvider,我用它来填充列表组件.像这样: var myDataProvider = new DataProvider(this.myArray);this['list'].dataProvider = myDataProvider; 当对数组进行更改时,我想告诉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
> ArrayCollection

编辑:我的错,我确实假设你正在使用Flex进行上述操作.

在普通的旧AS3中,主体是相同的. Array不会调度事件,但DataProvider会调度事件.如果您可以对dataProvider本身进行更改,那么您就可以开始了.

AS3 DataProvider类提供了许多用于数据操作的方法,例如addItem,removeItem,replaceItem,replaceItemAt.

因此,它基本上归结为您需要对源数组进行哪些更改.通常,您可以通过DataProvider完成它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读