由于我发现网页解释了可绑定的问题非常混乱,所以我想在这里发布我的问题,这很简单,如果我声明一个变量是可绑定的,这是否意味着每当我更改此变量的值时在另一个类中,此变量的所有外观将同时同步为相同的值吗?
比方说,如果布尔变量“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的值也会被广播?
提前致谢。
谢谢你的想法。
答案 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));
}