0

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

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

我是我的应用程序标签,我有以下内容

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

然后在我的初始化方法中;

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

//当我从 userRequest.getAllCountries() 得到结果时调用它;

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

但是我的文本框没有得到任何价值。

有想法的人吗?

4

2 回答 2

1

首先,Array 不可绑定,因此更改变量 data1 不会产生连锁反应。

arrayCollection 是可绑定的。

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

[Bindable]
priavte var ac : ArrayCollection;

然后在里面你是 getAllCountriesResult 函数。

ac = new ArrayCollection(e.result);

然后将更新设置为 var ac 的 dataprovider 的任何内容。

如果您希望更新 textArea 或类似内容中的文本值,则应在 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

于 2009-01-20T15:55:50.047 回答
0

试试这个:

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

确保 data2 已初始化为 ArrayCollection。

至于自动完成,我正在尝试自己解决问题。

于 2010-03-11T03:33:47.533 回答