Flex資料繫結陷阱 二

2021-08-27 01:22:19 字數 1418 閱讀 1736

嘗試繫結乙個沒有包含ipropertychangenotifier介面的類

實現ipropertychangenotifier介面的類,必須在類改變屬性時派發事件並且任何巢狀類必須作為公共屬性被**。

因此,你能發現類裡的屬性何時改變了。

例如,讓我們來看一下uicomponent類的簽名(見圖3)。

uicomponent類確實實現了發布屬性改變事件,這個一旦某個屬性被改變就會派發乙個事件的介面。

圖3.uicomponent類的簽名

現在看下下面這個控制使用者資訊的類: 如果你嘗試繫結使用者資訊類的 某個屬性刀label的text屬性上,按照下面的說明這麼寫的話,這個繫結將不會成功:

flex/spark"

xmlns:mx="library:"

minwidth="1024" minheight="768"

creationcomplete="creationcompletehandler()">

因為這段**嘗試去繫結乙個沒有實現 ipropertychangenotifier介面的類,繫結機制將不會工作。

在這個例子中,你將看到問題視窗下的以下提示資訊(見圖4):

資料繫結將不能實現偵測username的任務。

圖4.問題面板顯示的警告資訊

要讓前面的資料繫結能夠工作,你可以將[bindable]標籤加到類宣告前面。

這將使得這個類的所有公共屬性能夠被繫結。flex的編譯器將會為你生成公共的getter和setter方 法,這些將會包含使繫結工作的所有必要**。

或者如果你不希望使類的所有屬性都可以繫結,你可以將[bindable]標籤加到特定的屬性前面。 objectproxy 類

資料繫結要求被繫結的類實現ipropertychangenotifier介面,否則該物件將不能被繫結。

儘管如此,類/屬性或變數,如原始變數,沒有標記[bindable]標籤不能實現這個介面。

如果這個類是你自己寫的類,你所需要做的就是新增[bindable]元資料標籤。

如果不是你自己的類,你又希望繫結它,或你只是希望執行時新增繫結功能,你可以使用objectproxy類。

objectproxy封裝乙個沒有繫結的類並在這個被繫結類的任何屬性改變時派發屬性改變事件,

使得你能監聽你程式裡的該物件的屬性改變。

下面的例子使用了objectproxy類。我建立了乙個objectproxy的例項並把我希望看到的物件傳給它,在這個例子裡是 userinfo。

接著我新增了乙個事件監聽,來跟蹤userinfo各項的改變。

flex/spark"

xmlns:mx="library:"

minwidth="1024" minheight="768"

creationcomplete="creationcompletehandler()">

Flex資料繫結陷阱(一)

flex資料繫結陷阱 常見的誤用和錯誤 當構建flex或者adobe air程式時,將乙個物件的值自動的傳遞給另乙個物件這種處理是資料繫結最常 用並最有用的特徵之一。儘管如此,同時資料繫結會減緩程式的初始化,並且當開發者不是完全理解資料繫結的機制是如何工作的話,會引 起一些開發者意想不到的問題。最好...

Flex 資料繫結

package mxml private var sum int 0 bindable private var task task new task fx script bindable public function get sum int public function set sum valu...

Flex 資料繫結

package mxml private var sum int 0 bindable private var task task new task fx script bindable public function get sum int public function set sum valu...