我想添加一個派生屬性彎曲:依賴於數據綁定
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