flex 3和autoComplete

时间:2009-01-20 15:34:21

标签: flex autocomplete

我试图让自动完成工作,当我只是在我的mxml中创建一个数组,然后在initialize关键字中初始化文件顶部的arrayCollection时,我可以做得很好。

但是我想从webservice填充arraycollection,但我似乎无法得到它;

我的应用程序标签我有以下

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 个答案:

答案 0 :(得分:1)

首先关闭,Array不是Bindable,因此更改变量data1将不起作用。

arrayCollection是可绑定的。

所以假设结果(e.result)实际上是一个数组(你应该在调试时检查这个)然后你可以做以下

[Bindable]
priavte var ac : ArrayCollection;

然后在你里面得到getAllCountriesResult函数。

ac = new ArrayCollection(e.result);

然后将更新任何设置为var ac的数据提供者。

如果您希望更新textArea或类似内容中的文本值,那么您应该在arrayCollection中侦听change事件,然后采取适当的操作。


从下面的附加点(只需编辑原始问题)

我认为你所说的自动完成是来自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

答案 1 :(得分:0)

试试这个:

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

确保data2已初始化为ArrayCollection。

至于AutoComplete,我正在尝试自己解决问题。