flash - 如何告诉 DataProvider 更新?

标签 flash actionscript-3 dataprovider

我正在使用一个数组来填充一个 DataProvider,我正在使用它来填充一个列表组件。像这样:

var myDataProvider = new DataProvider(this.myArray);
this['list'].dataProvider = myDataProvider;

当对数组进行更改时,我想告诉 DataProvider 进行更新,以便这些更改将反射(reflect)在列表组件中。如果有一种方法可以告诉 DataProvider 监听数组中的更改并更新自身,那就太好了,但我会选择一种手动更新它的方法。

我可以用新的 DataProvider 替换 DataProvider,但是列表会丢失它的选择。我想我可以通过 DataProvider 并比较和修改每个条目以使其与数组匹配,但这似乎太麻烦了。有没有办法告诉 DataProvider 更新以匹配数组?

编辑:我正在寻找一种在 Flash 而不是 Flex 中执行此操作的方法。

最佳答案

数组在 AS 3 中不可绑定(bind);他们自己不会调度/触发数据绑定(bind)事件。

如果您正在使用 Flex,您可以将数组包装在 ArrayCollection 中。这是可绑定(bind)的,并操纵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 Array小号
  • ArrayCollection

  • 编辑:我的错,我确实假设您在上面使用了 Flex。

    在普通的旧 AS3 中,主体是相同的。 Array不分派(dispatch)事件,但 DataProvider 做。如果您可以对 dataProvider 本身进行更改,那么您就可以开始了。

    AS3 DataProvider类提供了一系列数据操作方法,例如 addItem , removeItem , replaceItem , replaceItemAt ,例如。

    因此,它基本上归结为您需要对源数组进行什么样的更改。通常情况下,您可以通过 DataProvider 进行操作。 .

    关于flash - 如何告诉 DataProvider 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280921/

    相关文章:

    apache-flex - 使用 Flex 的 mxmlc 编译器在 SWF 中包装或嵌入 MP3

    actionscript-3 - 场景结束后停止音乐

    yii2 - 在 Yii2 ArrayDataProvider 中使用闭包

    actionscript-3 - AS3 从静态方法中获取当前类名

    mysql - 带有自定义查询的 yii2 dataprovider

    java - 如何将测试数据作为从 YAML 文件读取的 Object[][] 进行管理?

    javascript - 如何从 Javascript 中调用嵌入式 swfs 函数?

    flash - 在 Flash 中渲染等距柱状图像最成熟的库是什么?

    javascript - 分别使用 2 个不同的 YouTube 视频作为音频和视频的 YouTube 播放器

    C# 4 与 ActionScript 3 : syntax differences