我需要将属性绑定(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);
会发生什么:
我想要的是这样的:
如何使用 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/