如何在运行时动态地将组件绑定到XML节点?

时间:2010-09-13 06:16:21

标签: xml flex actionscript mxml xpath

我有一个基于mx:ComboBox的自定义组件。在其中我连接到HTTPService(url作为参数传递)并绑定组合框。要发送到HTTPService的参数将传递给组件。这工作正常。但我想修改它以使其可以与其他HTTP服务URL重用,后者以不同的格式返回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时都会有所不同。

这可能吗?或者实现相同目标的任何解决方法?

编辑:它适用于“子”属性。

的dataProvider = “{myData.child(myDataField)}”

但是,如果数据字段进一步嵌套,那么这不起作用。例如。 myData.people.person

如果数据字段嵌套在另一个节点下,有没有办法让它工作?可以使用XPATH表达式或其他方法完成吗?

2 个答案:

答案 0 :(得分:1)

使用“child”属性。

答案 1 :(得分:0)

不可能。 'Bind'是(Flex)框架能力 - 不是标准(AS)语言结构。 您必须自己管理所有事件。