Flex:使 getter 在值对象中可绑定
我在 Flex 中有一个值对象,如下所示:
[Bindable]
public class MyVO
{
public var a:ArrayCollection;
public var b:ArrayCollection;
private var timeSort:Sort;
public function ShiftVO(){
timeSort = new Sort();
timeSort.compareFunction = sortDates;
}
public function get times():ArrayCollection{
var ac:ArrayCollection = new ArrayCollection(a.toArray().concat(b.toArray()));
ac.sort = timeSort;
ac.refresh();
return ac;
}
这是关于 getter 方法的。我在数据网格中显示 getter 的数据,每当我更改 a
或 b
的某些值时,我也想更新视图。我该如何实现这一目标?目前视图不会自动更新,我必须再次打开视图才能看到新值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您创建一个属性
[Bindable]
时,每当调用其setter时(即当属性更新时),Flex都会读取getter;您还没有声明任何 setter,因此 Flex 无法知道属性的值已更新。也许你可以定义一个空的 setter 并在更新 a 或 b 时调用它。
只是注意到您在类上使用 Bindable 而不是属性:当您使用 以这种方式绑定标签,它使得
因此,除非定义 setter,否则即使整个类被声明为可绑定,该属性也不可绑定。
When you make a property
[Bindable]
, the Flex will read the getter whenever its setter is called (ie, when the property is updated); you haven't declared any setter and hence there is no way for Flex to know that the value of property has been updated.May be you can define an empty setter and call it whenever you update a or b.
Just noticed that you're using Bindable on the class instead of the property: when you use the Bindable tag this way, it makes
Thus, unless you define a setter, the property is not bindable even if the whole class is declared as bindable.