簡體   English   中英

Flex:使用XML文件的動作腳本和數據綁定

[英]Flex: Actionscript & DataBinding using XML File

我創建了自己的組件,該組件使用XML文件的lastResult綁定到其dataProvider屬性。

綁定在AS中發生,如下所示: BindingUtils.bindProperty(this.myChildComponent1,"dataProvider",this,"dataProvider");

上面成功將this.dataProvider綁定到我的子組件dataProvider 出現的問題是,我需要綁定另一個結果XML子元素的值的組件。 像這樣:
this.dataProvider.child('NextNode')

但是問題在於,當調用組件的createChildren()時,XML lastResult尚未填充,因為該請求是異步HTTPRequest因此this.dataProvider等於null

最終,當數據到達時,它已在內部正確地綁定,但是我無法通過以下方式將數據的下一個子項綁定到另一個組件( this.myChildComponent2 ):
BindingUtils.bindProperty(this.myChildComponent2,"dataProvider",this,"dataProvider.child('NextNode'");沒有這樣的子級。

BindingUtils.bindProperty(this.myChildComponent2,"dataProvider",this,this.dataProvider.child('NextNode')); :表示this.dataProvider為null / undefined。

即使發行: if(this.dataProvider == null) {this.invalidateProperties();} else //Bind Child不為工作commitProperties是越來越inspite我打電話叫一次invalidateProperties()內檢查后commitProperties()

任何幫助表示贊賞。 謝謝。

我還沒有測試過,也沒有嘗試過綁定到XML和XML子級,但是這里有。

您應該嘗試使用屬性鏈來執行此綁定。 您的代碼看起來根本不應該工作,因為BindingUtil使用字符串作為屬性描述,而不是表示您要調用的函數的字符串。 您的代碼:。

BindingUtils.bindProperty(this.myChildComponent2,"dataProvider",this,"dataProvider.child('NextNode')");

相反,應為:。

BindingUtils.bindProperty(this.myChildComponent2,"dataProvider",this,["dataProvider","NextNode"]);

除了您的代碼看起來不應該工作外,還有其他原因可以這樣做。

  1. XML子節點不會調度propertychange事件,因此,如果子節點確實發生了更改,則無論如何它也不會在您的第二個組件中進行更新。

  2. 使用屬性鏈意味着將查找對“ dataProvider”和“ NextNode”的更改,因此,如果其中任一更改發生綁定綁定。

  3. 使用鏈意味着您不必擔心XML在啟動時不會被加載。 如果鏈中的屬性不可用,則將目標設置為null。

因此,如果使用此方法,則僅對“ dataProvider”進行的更改將觸發綁定(this.dataProver =諸如此類)。 如果您還希望通過更改'NextNode'來觸發綁定,則必須手動調度PropertyChange事件以指示發生了更改:。

dataProvider.dispatchEvent(new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE,false,false,PropertyChangeEventKind.UPDATE,"NextNode",*oldValue*,*newValue*);

其中oldValue / newValue是可選的。 讓我知道這是否有效...我認為應該可以,但是嘿,誰知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM