我试图让自动完成工作,当我只是在我的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);
}
但是我的文本框没有任何价值。
有想法的人吗?
答案 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,我正在尝试自己解决问题。