我想添加一个派生属性弯曲:依赖于数据绑定
private var a:int;
private var b:int;
[Bindable]
public function get derived():int
{
return a+b;
}
然而,得到的将不会更新当我改变a或b。是否有更好(更快)的方式来进行派生更新比给予和B设置方法使其无效?
编辑:添加关键字“get”。我希望现在更有意义。
我想添加一个派生属性弯曲:依赖于数据绑定
private var a:int;
private var b:int;
[Bindable]
public function get derived():int
{
return a+b;
}
然而,得到的将不会更新当我改变a或b。是否有更好(更快)的方式来进行派生更新比给予和B设置方法使其无效?
编辑:添加关键字“get”。我希望现在更有意义。
您的代码不会创建属性,它会创建一个方法。方法不能是Bindable,只能是属性。这种方法应该为你工作:
private var _a:int;
public function get a():int{
return _a
}
public function set a(value:int):void{
_a = a;
dispatchEvent(new Event('derivedChanged'));
}
private var _b:int;
public function get b():int{
return _b
}
public function set b(value:int):void{
_b = b;
dispatchEvent(new Event('derivedChanged'));
}
[Bindable(event="derivedChanged")]
public function get derived():int
{
return a+b;
}
我写了代码n的浏览器;所以可能会有小的语法错误。
对,这正是我目前的代码。我想知道是否可以避免为a和b添加get和set方法。 – 2010-08-20 20:14:09
这不是你发布的代码。 ;)要在只读属性上触发绑定,必须分派绑定事件。它不一定是a和b的设定方法,但这是最合乎逻辑的地方。 – JeffryHouser 2010-08-20 21:34:23
您可以在衍生函数上使用[Bindable(event="propertyChanged")]
。
你也应该让你的派生函数成为一个getter。
我应该工作,因为flex使用PropertyChangeEvent.PROPERTY_CHANGE
绑定变量,通过自动创建getter和setters并分派PropertyChangeEvent
。修改a或b将自动使derived
的结果无效。
我觉得这是一个常见问题,所以我写了一些代码来帮助它。您可以在Bindable元数据中添加吸气剂依赖的内容。所以:
[可绑定(事件= “derivedChanged”,dependentProperty = “A”)] [可绑定(事件= “derivedChanged”,dependentProperty = “B”)] 公共函数得到衍生的():整数 { 返回a + b; }
它是自定义代码,用Parsley的元数据处理编写,但是你可以在没有Parsley的情况下使用它 - 它只是一个普通的方法调用,看起来不会很好。
检查出来:http://frishy.blogspot.com/2011/06/binding-dependencies.html
-Ryan
哎呀,我看到我忘了 “得”。让我编辑这个。 – 2010-08-20 20:15:39