2016-01-24 111 views
-1

我不知道Flex/Flash,但我有一个遗留代码,它迫使我寻找答案。请帮帮我。Flex绑定两个变量

我有控制器和演示者类。控制器可以加载一些配置,我在这里添加了布尔变量isConfigurationLoaded,现在我想在控制器中将此变量绑定到演示者中的相同变量。我如何做到这一点?

我阅读了BindingUtils,但很多示例都有mxml文件的一部分,它让我害怕了一点。谢谢。

回答

0

首先,你需要声明在控制器中你作为可绑定变量,这样BindingUtils会得到事件一旦发生变化:

[Bindable] 
public var isConfigurationLoaded:Boolean; 

然后设置在主持人的结合:

// use weak references so it will be garbage collected 
BindingUtils.bindProperty(this, "isConfigurationLoaded", myControllerReference, "isConfigurationLoaded", false, true); 

public function set isConfigurationLoaded(value:Boolean):void 
{ 
    trace("isConfigurationLoaded in the controller has changed to " + value); 
    _isConfigurationLoaded = value; 
} 

public function get isConfigurationLoaded():Boolean 
{ 
    return _isConfigurationLoaded; 
} 

或者,如果您不想为变量创建getter/setter,则可以将变量绑定到演示者中的函数调用:

// use weak references so it will be garbage collected 
BindingUtils.bindSetter(onisConficurationLoaded, myControllerReference, "isConfigurationLoaded", false, true); 

private function onisConficurationLoaded(value:String):void 
{ 
    trace("isConfigurationLoaded in the controller has changed to " + value); 
    isConficurationLoaded = value; 
} 

BindingUtils返回ChangeWatcher实例,你可以存储它,如果需要取消监视属性:

// watch 
var changeWatcher:ChangeWatcher = BindingUtils.bindSetter(onisConficurationLoaded, myControllerReference, "isConfigurationLoaded"); 

// unwatch 
changeWatcher.unwatch();