apache-flex - 如何在 Flex 3 中创建双向数据绑定(bind)?

标签 apache-flex data-binding flex3

我需要将属性绑定(bind)到编辑控件并让控件将其值写回相同的属性。问题是,我在创建控件之前设置源值:

<mx:Panel>
    <mx:Script>
        <![CDATA[
            [Bindable] public var editedDocument: XML;
        ]]>
    </mx:Script>
    <mx:TextInput id="docLabel" text="{editedDocument.@label}"/>
    <mx:Binding source="docLabel.text" destination="editedDocument.@label"/>
</mx:Panel>

我这样称呼它:
var xmlDoc: XML = <document label="some label" />;
var myPanel: MyPanel = new MyPanel();
myPanel.editedDocument = xmlDoc;
parent.addChild(myPanel);

会发生什么:
  • docLabel 文本字段以空白结尾(等于“”)
  • xmlDoc 的@label 属性设置为“”

  • 我想要的是这样的:
  • docLabel 文本字段应包含“一些标签”
  • 只有当 docLabel 的 text 属性发生变化时,xmlDoc 的 @label 属性才会发生变化。

  • 如何使用 Flex 3 完成此任务?

    编辑

    我也试过这个:
    <mx:Panel>
        <mx:Script>
            <![CDATA[
                [Bindable] public var editedDocument: XML;
            ]]>
        </mx:Script>
        <mx:TextInput id="docLabel"/>
        <mx:Binding source="editedDocument.@label" destination="docLabel.text"/>
        <mx:Binding source="docLabel.text" destination="editedDocument.@label"/>
    </mx:Panel>
    

    结果是一样的。

    最佳答案

    您可以在创建类后尝试使用 BindingUtils 以编程方式创建绑定(bind):
    http://life.neophi.com/danielr/2007/03/programmatic_bindings.html

    我用来解决类似问题的许多变体。如果您无法从链接中找出答案,请发表评论,我将深入研究我的源代码,看看我能找到什么。

    private function init():void 
    {
      var xmlDoc: XML = <document label="some label" />;
      var myPanel: MyPanel = new MyPanel();
      myPanel.editedDocument = xmlDoc;
      parent.addChild(myPanel);
      BindingUtils.bindProperty(docLabel, "text", editedDocument, "label");
    
      //or maybe it should be one of these, I have not done binding to an XML attribute before
      BindingUtils.bindProperty(docLabel, "text", editedDocument, "@label");
      BindingUtils.bindProperty(docLabel, "text", editedDocument, "{@label}");
    }
    

    关于apache-flex - 如何在 Flex 3 中创建双向数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785002/

    相关文章:

    java - 无法显示高分辨率 PNG 图像

    java - 如何使用 Angular 2 的 Blaze DS 软件?

    css - 在 Adob​​e flex 4 中使用 Font Awesome

    apache-flex - Flex 4 自定义组件 - 如何通知皮肤属性更改?

    apache-flex - Actionscript 的 ExternalInterface.addCallback 只能在本地工作,不能在生产中使用

    wpf - 使用 XAML 创建 WPF UserControl,以便我可以在其中嵌套子控件

    apache-flex - Adobe flex - 事件元数据标记和克隆方法

    c# - 如何从 DataGridView 中删除绑定(bind)列?

    java - 将 SWT 列表绑定(bind)到 ArrayList

    apache-flex - 为什么 Adob​​e Alchemy Tool 创建的闪存字节代码运行速度比 flex 编译器更快?