flex 3 и автозаполнение - PullRequest
       24

flex 3 и автозаполнение

0 голосов
/ 20 января 2009

я пытаюсь получить автоматическое завершение работы, и я могу сделать это хорошо, когда я просто создаю массив в моем mxml, а затем просто инициализирую arrayCollection вверху файла в ключевом слове initialize.

Однако я хочу заполнить коллекцию массивов из веб-сервиса, но, похоже, не могу ее получить;

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);
        }

однако мое текстовое поле не получает никакого значения.

Кто-нибудь с идеями?

Ответы [ 2 ]

1 голос
/ 20 января 2009

сначала, массив не привязывается, поэтому изменение переменной data1 не повлияет на результат.

МассивCollection является привязываемым.

Предполагая, что результат (e.result) на самом деле является массивом (вы должны проверить это при отладке), вы можете сделать следующее

[Bindable]
priavte var ac : ArrayCollection;

тогда внутри вы получите функцию getAllCountriesResult.

ac = new ArrayCollection(e.result);

тогда все, что имеет поставщик данных, установленный в переменную ac, будет обновлено.

Если вы хотите обновить текстовое значение внутри textArea или аналогичного, то вам следует прослушать событие change в arrayCollection и предпринять соответствующее действие.


из ваших дополнительных пунктов ниже (просто отредактируйте исходный вопрос)

Я полагаю, что автозаполнение, о котором вы говорите, это поле ввода автозаполнения из области обмена Adobe, поскольку обычное текстовое поле не принимает arrayCollection. Если вы разместили код, это может помочь вам в этом. Преинициализируйте, затем инициализируйте, затем creationComplete, затем 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 голосов
/ 11 марта 2010

Попробуйте это:

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

Убедитесь, что data2 уже инициализирован как ArrayCollection.

Что касается автозаполнения, я пытаюсь сам разобраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...