Вы спрашиваете о связывании, но я не думаю, что это то, что вы хотите знать.Я полагаю, что ответом является следующая строка в обработчике результатов:
searchType.dataProvider = e.result as ArrayCollection;
Я предполагаю, что вы получаете массив из ColdFusion.Если память служит мне, вы не можете преобразовать массив в ArrayCollection.Результат, скорее всего, будет нулевым.Вы проверяли код в режиме отладки для проверки?
Вместо этого попробуйте это:
searchType.dataProvider = new ArrayCollecection(e.result as Array);
Поскольку e.result является универсальным объектом, вам нужно будет преобразовать его в массив.
Для решения обязательной части вашего ответа.У привязки есть источник и значение.Когда источник изменяется, значение автоматически обновляется.У вас есть значение (dropDownList.dataProvider), которое вы хотите изменить, но у вас нет источника для этого.Ничто в вашем коде не использует привязку.Вы просто устанавливаете значение вручную, когда возвращаются результаты.Чтобы использовать привязку, я мог бы изменить ваш код следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="500" height="286"
creationComplete="initApp()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
// create a variable taht can be used as the source for a binding operation
[Bindable]
public var mySource : ArrayCollection;
private function myMethodResult(e:ResultEvent):void
{
// searchType.dataProvider = e.result as ArrayCollection;
// change the value of your binding source
mySource = new ArrayCollection(e.result);
}
protected function initApp():void
{
service.myMethod();
}
protected function faultHandler(event:FaultEvent):void
{
trace(event.fault.faultString);
}
]]>
</fx:Script>
<fx:Declarations>
<s:RemoteObject id="service"
destination="zend"
source="Test"
showBusyCursor="true"
fault="faultHandler(event)">
<s:method name="myMethod" result="myMethodResult(event)"/>
</s:RemoteObject>
</fx:Declarations>
<!-- and finally, specify your dataProvider as the target for binding -->
<s:DropDownList id="searchType" labelField="NAME" dataProvider="{this.mySource }"/>
</s:WindowedApplication>
Я написал весь код в браузере, и он не может быть "идеальным при компиляции"