有关Flex中可绑定的问题

时间:2010-07-09 20:57:36

标签: flex

由于我发现网页解释了可绑定的问题非常混乱,所以我想在这里发布我的问题,这很简单,如果我声明一个变量是可绑定的,这是否意味着每当我更改此变量的值时在另一个类中,此变量的所有外观将同时同步为相同的值吗?

比方说,如果布尔变量“select”在A类中被声明为可绑定,并且默认为false,并且我们在A类中有if语句,如if(select)。

然后在另一个类中,我们将“select”的值更改为true,if if(select)语句是否会通过测试?

此外,以下定义为可绑定的setter方法如何:

[Bindable]
public function set isShowingAvg(b:Boolean):void
{
   _isShowingAvg = b;

   hasChanged();
}

此代码是否暗示更改_isShowingAvg的值也会被广播?

提前致谢。

谢谢你的想法。

2 个答案:

答案 0 :(得分:6)

将属性声明为Bindable意味着当您更改值时,将广播一个事件。此事件启用数据绑定,但不一定是自动的。

如果使用类是MXML并使用括号,如下所示:

<mx:Button enabled="{selected}" />

然后MXML编译器将生成适当的绑定代码,并且随时selected更改,enabled也将更改。

如果您在MXML之外使用它,那么您将订阅该事件以检测更改或使用BindingUtils

答案 1 :(得分:1)

在你的例子中,我认为你需要标记getter [Bindable]而不是setter。

示例:

public static const SHOWING_AVG_CHANGED:String = "showingAvgChangedEvent";

 [Bindable(event="showingAvgChangedEvent")]
public function get isShowingAvg():Boolean
{
   return _isShowingAvg;
}

public function set isShowingAvg(isShowing:Boolean):void
{
   _isShowingAvg = isShowing;
   dispatchEvent(new Event(SHOWING_AVG_CHANGED));
}