我Class1
有一个名为age
的只读可绑定属性:
public class Class1 {
private var _age:int;
[Bindable(event="ageChanged"]
public function get age():int {
return this._age;
}
public function something():void {
_age++;
dispatchEvent(new Event("ageChanged"));
}
}
我还有Class2
,其中包含Class1
的私有实例。我希望age
提供属性Class1
并且仍然可绑定。
public class Class2 {
private var c1:Class1 = new Class1();
[Bindable????]
public function get age():int {
}
}
当然[Bindable]
标签没有意义。但是我怎样才能达到同样的效果呢?
我相信我可以从ageChanged
发送某种Class2
事件到Class1
,然后在Class1
中发送一个事件处理程序,发送另一个本地ageChanged
我绑定Class2
的{{1}}属性的事件。
但这听起来不必要地复杂化。有没有更简单的方法? :)
谢谢!
答案 0 :(得分:2)
尝试使用以下内容:
public class Class2 extends EventDispatcher {
private var _c1:Class1;
public function set c1(value:Class1):void
{
if (value == _c1)
return;
if (_c1)
_c1.removeEventListener("ageChanged", ageChangedHandler);
_c1 = value;
if (_c1)
_c1.addEventListener("ageChanged", ageChangedHandler);
}
private function ageChangedHandler(event:Event):void
{
dispatchEvent(new Event("ageChanged"));
}
[Bindable("ageChanged")]
public function get age():int {
}
}
答案 1 :(得分:1)
就个人而言,我只是将我的复合类作为公共类,并且如果它是一个模型(我认为它是),则从视图中访问它。如果您不想这样做,可以随时使用BindingUtils:
在第2类构造函数中
var watcher:ChangeWatcher = BindingUtils.bindProperty(this, 'age', c1, 'age');