[英]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"]);
除了您的代碼看起來不應該工作外,還有其他原因可以這樣做。
XML子節點不會調度propertychange事件,因此,如果子節點確實發生了更改,則無論如何它也不會在您的第二個組件中進行更新。
使用屬性鏈意味着將查找對“ dataProvider”和“ NextNode”的更改,因此,如果其中任一更改發生綁定綁定。
使用鏈意味着您不必擔心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.