2009-01-20 39 views
0

即時通訊嘗試讓自動完成工作,我可以做得很好,當我只是在我的mxml中創建一個數組,然後在initialize關鍵字的文件頂部初始化一個arrayCollection。flex 3和autoComplete

但是我想從Web服務填充arraycollection,但我似乎無法得到它;

IM我的應用程序標籤,我有以下

creationComplete="init()" 
initialize="data2 = new ArrayCollection(data1);" 

然後在我的init方法;

private function init():void 
{ 
userRequest.loadWSDL(wsdlUrl); 
userRequest.getAllCountries(); 
} 

//當我從userRequest.getAllCountries()得到一個結果時調用這個函數;

private function getAllCountriesResult(e:ResultEvent):void 
    { 
    data1 = new Array(e.result); 
     } 

但是,我的文本框沒有得到任何價值。

有想法的人嗎?

+0

我實際上得到的數據和autoComplete工作,但有一個問題,數組中的第一個元素總是出現在加載時在輸入框中。當我刪除它,並開始輸入它工作正常,但這不是我想要的。 任何想法? – cduggan 2009-01-20 18:18:09

回答

1

首先,數組不是可綁定的,所以更改變量data1將沒有效果。

arrayCollection是可綁定的。

所以presumming的結果(e.result)實際上是一個數組(你應該檢查這個調試時),那麼你可以做以下

[Bindable] 
priavte var ac : ArrayCollection; 

然後裏面你getAllCountriesResult功能。

ac = new ArrayCollection(e.result); 

然後任何有數據提供者設置爲var ac的任何東西都會被更新。

如果您希望更新textArea或類似內容中的文本值,則應該監聽arrayCollection中的更改事件,然後執行相應的操作。


從下面(編輯你原來的問題)

您的附加分我把它你談論的是自動完成從Adobe交換區自動完成文本輸入框,一個普通的文本框不拿一個arrayCollection。 如果你發佈了一些代碼,它可能會更容易幫助你。 預先初始化,然後初始化,然後創建完成,然後applicationComplete(這是它們被調用的順序)。

如果您使用我正在考慮的組件,請查看http://www.websector.de/blog/2008/04/30/quick-tip-avoid-issues-using-adobes-autocomplete-input-component-using-flex-3/ 看來它可能與flex 3有一些問題,因此請檢查http://blogs.adobe.com/flex/2006/09/component_autocomplete_text_in.html

0

試試這個:

private function getAllCountriesResult(e:ResultEvent):void 
{ 
    data2.source = new Array(e.result); // or data2.source = e.result as Array 
} 

確保數據2已經被初始化爲ArrayCollection中。

至於AutoComplete,我試圖自己解決問題。