Как динамически связать компонент с узлом XML во время выполнения? - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть пользовательский компонент на основе mx: ComboBox.В нем я подключаюсь к HTTPService (URL передается как параметр) и связываю комбинированный список.Параметры для отправки в HTTPService передаются компоненту.Это работает нормально.Но я хочу изменить его, чтобы его можно было повторно использовать с другими URL-адресами служб HTTP, которые возвращают XML в другом формате.

Моя задача заключается в том, как динамически связать пользовательский компонент с узлом во время выполнения?

Код MXML компонента выглядит следующим образом:

<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" 
  dataProvider="{myData.person}
    <mx:HTTPService id="serviceTest"
        resultFormat="e4x" 
        result="myResultHandler(event);" 
        fault="myFaultHandler(event);" />
</mx:ComboBox>

Мне может потребоваться изменить

myData.person

на:

myData.region

Это можно сделать в MXML?

Или это можно сделать в Actionscript?Есть ли что-то вроде:

this.dataProvider = myData.[person];

Хитрость в том, что я не буду знать, с чем связываться, поскольку XML будет отличаться при каждом использовании.

Возможно ли это?Или любой обходной путь, который достигает того же самого?

РЕДАКТИРОВАТЬ: он работает со свойством "child".

dataProvider = "{myData.child (myDataField)}"

Но это не работает, если поле данных далее вложено.Например, myData.people.person

Есть ли способ заставить его работать, если поле данных вложено в другой узел?Можно ли это сделать с помощью выражения XPATH или чего-то еще?

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Используйте свойство child.

0 голосов
/ 13 сентября 2010

Это невозможно. «Связать» - это возможность (Flex) фреймворка, а не стандартная (AS) конструкция языка Вы должны сами управлять всеми событиями.

...