Flex警告:无法绑定到类“Object”上的属性“foo”(类不是IEvent
我有一个包含十几个字段的对象,我想绑定到表单元素,以便我可以使用该对象将数据发送回服务器进行保存。
我的容器对象的定义: private static const emptyLink:Object = { id: -1,title:'',trigger1:'',trigger2:'',trigger3:'',trigger4:'',trigger5:'',linkTitle:'',linkBody:'',answer1:'',answer2:'',answer3:'',answer4:'',answer5:'' }; [Bindable] public var currentLink:Object = emptyLink; currentLink在运行时被分配到ArrayCollection的特定索引,我主要使用emptyLink对象进行初始化。 <mx:Panel id="triggerPanel" title="Trigger" width="33%"> <mx:VBox id="tpBoxes" width="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"> <mx:TextInput id="trigger1" width="100%" textAlign="left" text="{currentLink.trigger1}" /> <mx:TextInput id="trigger2" width="100%" textAlign="left" text="{currentLink.trigger2}" /> <mx:TextInput id="trigger3" width="100%" textAlign="left" text="{currentLink.trigger3}" /> <mx:TextInput id="trigger4" width="100%" textAlign="left" text="{currentLink.trigger4}" /> <mx:TextInput id="trigger5" width="100%" textAlign="left" text="{currentLink.trigger5}" /> </mx:VBox> </mx:Panel> 当然,这个编译和显示很好,但每个实例都有运行时警告:
当TextInput字段更改时,currentLink对象不会更新。 明显的答案是我的对象需要一个实现IEventDispatcher的类的实例。这个答案没有告诉我的是,实现该接口(需要什么,什么不是)的细节,如果有一个更简单的方法来做 – 像一个内置的类,将乐意接受我的自定义属性,并允许对于绑定,没有我不必担心实现接口的细节。 这样的类是否存在?如果没有,完成这项任务的最低和/或接受的标准是什么? 解决方法
您需要使用ObjectProxy(作为Chetan提到) – 但是您还需要使用valueCommit来获取输入到您的对象的输入中的文本:
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.utils.ObjectProxy; private static const emptyLink:Object = { id: -1,answer5:'' }; [Bindable] public var currentLink:ObjectProxy = new ObjectProxy(emptyLink); private function handleClick():void { trace(currentLink.trigger1); } ]]> </mx:Script> <mx:Panel id="triggerPanel" title="Trigger" width="33%"> <mx:VBox id="tpBoxes" width="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"> <mx:TextInput id="trigger1" width="100%" textAlign="left" text="{currentLink.trigger1}" valueCommit="{currentLink.trigger1 = trigger1.text;}"/> <mx:Button label="Click" click="handleClick()"/> </mx:VBox> </mx:Panel> </mx:WindowedApplication> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |