Apache flex 数据绑定的替代方案
作为将数组集合绑定到数据网格的数据提供程序的替代方法,我是否可以在创建时将数组集合作为数据提供程序分配给数据网格,并在每次更新数组集合时执行invalidateProperties;无效主义者;要重新渲染数据网格 我所描述的方法有意义吗 我所描述的方法有意义吗 有点。如果使用get/set方法定义了arrayCollection ac,则没有理由每次更改数据时都不能使用set方法在DataGrid上设置数据提供程序 如果您这样做,那么您很可能不必更新DatGrid的属性或显示列表,因为仅仅更换数据提供程序就可以了 大概是这样的:Apache flex 数据绑定的替代方案,apache-flex,actionscript-3,Apache Flex,Actionscript 3,作为将数组集合绑定到数据网格的数据提供程序的替代方法,我是否可以在创建时将数组集合作为数据提供程序分配给数据网格,并在每次更新数组集合时执行invalidateProperties;无效主义者;要重新渲染数据网格 我所描述的方法有意义吗 我所描述的方法有意义吗 有点。如果使用get/set方法定义了arrayCollection ac,则没有理由每次更改数据时都不能使用set方法在DataGrid上设置数据提供程序 如果您这样做,那么您很可能不必更新DatGrid的属性或显示列表,因为仅仅更换数
private var _ac : ArrayCollection;
public function get ac():ArrayCollection){
return this._ac;
}
public function set ac(value:ArrayCollection){
this._ac = value;
this.dataGrid.dataProvider = this.ac;
}
答对了,每次ac值更新时,DataGrid上的dataProvider也会更新 @Wade:你能解释一下你为什么倾向于拒绝吗?谢谢。@Flextras:需要注意的是,该集合正在逐项修改,而不是作为一个整体进行修改,即_ac.addItemobj;理想情况下,我希望在将集合重新指定为数据网格的数据提供程序之前,将集合中的所有对象添加/删除。通过getter/setters方法可以做到吗?@dank106我想现在更能理解了。您没有更改dataPRovider引用,而是更改该引用指向的集合。这是正确的吗?在集合中添加或删除项时,DataGrid应自动更新。这与绑定无关。这是因为DataGrid实现了collectionChange事件处理程序。但是,如果修改集合中对象的属性,DataGrid将不会更新。为此,您必须在DataGrid上执行相关的无效宣告。@Flextras:是的,您是正确的。我正在寻找一种更有效的方法来处理集合的更改;我希望在强制网格重新渲染之前,等待集合中的所有更改发生。另外,感谢您指出数据网格实现了集合更改处理程序;我的印象是需要绑定。您可以检查代码,但最有可能的是默认collectionChange处理程序使用组件生命周期;在这种情况下,一系列连续的更改不会同时更新。但是,您始终可以扩展和覆盖以更改默认方法。