[Bindable]
/**
* Display output of video device.
*/
public var videoLocal : Video;
任何人都知道嗎?[Bindable]在動作中意味着什麼?
[Bindable]
/**
* Display output of video device.
*/
public var videoLocal : Video;
任何人都知道嗎?[Bindable]在動作中意味着什麼?
它在數據綁定使用Flex中,你可以閱讀更多關於它在這裏
http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_2.html
創建屬性當您創建一個屬性來作爲源使用數據綁定
那你想使用 作爲數據源 綁定表達式,Flex可以 自動將 源屬性的值複製到任何目標 屬性當源屬性 更改。要向Flex發送信號以執行 複製,您必須使用[Bindable] 數據標記來註冊屬性爲 Flex。
[Bindable]是您可以在Flex ActionScript代碼中使用的幾個元標記之一。它可以應用於任何範圍內標記的屬性或方法。它不能用於靜態類成員。
使用[Bindable] meta標籤的關鍵是瞭解使用它時引擎蓋下的情況。本質上使用數據綁定是一種用於添加事件偵聽器和分派事件的簡寫形式。
[Bindable]標籤有兩種基本形式。第一個是[Bindable]後跟一個var/property聲明。第二個是[Bindable(event =「eventname」)]後跟一個var/property聲明,一個函數/方法聲明或getter/setter聲明的一半。
我會解釋更長的記法,因爲另一個基於相同的概念,但速度更快。
當你使用[Bindable(event =「eventname」)]你基本上告訴編譯器這個var/property/function /方法(稱爲這個實例成員)是'available'用作數據綁定的來源。您還告訴它,當實例成員的值已被無效/更改時,需要重新讀取「eventname」事件將被分派。
在這個更長的形式,這一切你在做什麼。只要值需要在綁定訂戶中更新,開發人員就負責實際分派「eventname」事件。
使用數據綁定的真正效率來自訂閱方。典型的符號,你會在MXML看到的是值=「{} instance.propertyName」當您使用符號{}你告訴編譯器執行以下操作:
,你一個屬性/ VAR前添加標籤,編譯器填補了空白,並增加了部分附加功能,使屬性可綁定。從本質上講,你是在告訴編譯器「添加你需要這個屬性綁定的事件和方法」
我們想起了什麼,編譯器會做引擎蓋下是這樣的方式。
本質編譯器會做很多爲你工作。
[Bindable]
public var xyz
相當於
private var _xyz:String;
[Bindable(event="updateXYZValue")]
public function get xyz():String{
return _xyz;
}
public function set xyz(newxyz:String):void{
_xyz = newxyz;
dispatchEvent(new Event("updateXYZValue"));
}
在這些唯一的功能差異是,在第一個實例;
這第二個將被分派到觸發綁定
您可以使用函數/任意方法但是符號,如果你不指定事件將永遠不會被觸發,所以如果你正在試圖綁定到一個函數,你應該送花兒給人指定事件的結合。也可以通過堆疊標籤來指定多個觸發事件。例如。
[Bindable(event="metaDataChanged")]
[Bindable(event="metaObjectUpdated")]
public function readMyMetaData():MetaDataObject{
var myMetaDataObject:MetaDataObject;
.
.
.
return myMetaDataObject;
}
這假定別的你的地方你的類,你會分派此metaDataChanged事件或metaObjectUpdated事件,當你想觸發綁定。
也要注意,使用這個符號可以配合任何實例成員的結合的任何事件的情況下將出動。即使是繼承的事件,你自己也不如FrameEnter,的OnChange等產生...
數據綁定,也可以安裝和運行過程中被破壞。如果您對此感興趣,請查看mx.binding.utils類。
檢查Mihai的答案[下](http://stackoverflow.com/a/19729201/2530736)雙向綁定 – Vanlalhriata 2014-04-08 14:53:41
作爲補充什麼賈斯汀說,你實際上可以使用兩種方法數據的Flex與@具有約束性。這裏有一個例子:
<s:TextInput id="txt1" text="@{txt2.text}" />
對於源代碼的工作示例啓用你可以看看這篇文章,我寫了一段時間後:
如何做類似的工作,而不撓? – ollydbg 2010-10-18 13:28:42
@ollydbg我在回答這個問題的底部簡單回答了您的評論/問題。簡而言之,不使用mxml,您可以使用** mx.binding.utils **包直接在actionscript中創建和修改綁定。 – 2011-03-15 21:08:09