我有一个情况,我想在arraycollection中使用数据框来填充flex视图中的文本字段。
阵列汇总是从SQL结果对象填充的。我使用像这样的getters和setter将ArrayColuction存储在模型类中:
private var _monthlyData:ArrayCollection;
public function set monthlyData(value:ArrayCollection):void{
_monthlyData = value;
}
[Bindable]
public function get monthlyData():ArrayCollection{
return _monthlyData;
}
我将每月的lysdata用作列表等列表等的dataprovider。我还需要在此集合中的某些索引上使用属性作为文本字段字符串。当设置文本字段文本属性时,我尚未确定填充每月lyslaydata arraycollection。
文本字段设置在另一个外部类中,其中有一个单例引用此模型,因此我现在设置了类似的字段:
textField.text = _model.monthlyData.getItemAt(3).Month;
我想设置与数组集合的绑定,而不仅仅是使用此分配方法,以便刷新数组中的该项目或填充或更新整个数组汇编时,它将更新TextField文本。我很难完成绑定。
目前我正在使用bindagetools,但也一直在使用内置的as3 bindingutils效果。
i可以做以下内容,以正确设置初始文本属性,但是当arrayCollection更改时,它不会更新:
Bind.fromProperty(_model.monthlyData.getItemAt(3),"Month").toProperty(textField, "text");
因此,如果有人可以将我指向正确的方向,以便最好将绑定在纯AS3 no mxml中进行。
我真的很感激。欢呼Marco
从您提供的代码中,我可以看到monthlyData
是可约束的,这很好。我假设_model
也可以约束。
但是,getItemAt()
方法不可约束(当项目更改集合中的位置时,它不会派遣属性查看事件),因此不会更新文本属性。
您可以做的就是这样:
[Bindable]
public var selectedDate3:MyDate;
<s:TextInput id="myTextInput" text="{selectedDate3.month}" />
或等效的(为什么要让自己努力的事情都超出了我)
)BindingUtils.bindProperty(myTextInput, "text", selectedDate3, "month");
然后编程更新selectedDate3
:
_model.monthlyData.addEventListener(CollectionEvent.COLLECTION_CHANGE, updateSelected);
private function updateSelected(event:CollectionEvent):void {
selectedDate3 = _model.monthlyData.getItemAt(3);
}
请注意,month
的 MyDate
属性也必须具有约束力。
您提到这些字段在vgroup中。我猜您想显示前三名或其他东西。这仍然是一个列表。使用列表或数据段执行此操作会更容易,更清洁,然后只需过滤阵列汇票即可显示前3个项目(或任何要显示的项目的规则),或配置数据段仅显示三个项目(IT无论如何都没有滚动条)。