如何摆脱"多个describeType条目"警告?
时间:2020-03-05 18:38:37 来源:igfitidea点击:
有谁知道为什么在ComboBox的selectedItem属性上使用BindingUtils时会收到以下警告?任何想法如何解决该问题?
绑定仍然可以正常工作,但是最好摆脱警告。
warning: multiple describeType entries for 'selectedItem' on type 'mx.controls::ComboBox': <accessor name="selectedItem" access="readwrite" type="Object" declaredBy="mx.controls::ComboBase"> <metadata name="Bindable"> <arg key="" value="valueCommit"/> </metadata>
解决方案
回答
这是代码。基本上,它是为ComboBox设置的BindingUtils.bindProperty的副本,以便当两者中的任何一个更改时,组合框和模型都将更新。
public static function bindProperty2(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher { var cbx:ComboBox = null; if ( site is ComboBox ) { cbx = ComboBox(site); } if ( host is ComboBox ) { cbx = ComboBox(host); } var labelField:String = "listID"; var w:ChangeWatcher = ChangeWatcher.watch(host, chain, null, commitOnly); if (w != null) { var func:Function; if ( site is ComboBox ) { func = function(event:*):void { var dp:ICollectionView = ICollectionView(site.dataProvider); var selItem:Object = null; for ( var i:int=0; i<dp.length; i++ ) { var obj:Object = dp[i]; if ( obj.hasOwnProperty(labelField) ) { var val:String = String(obj[labelField]); if ( val == w.getValue() ) { selItem = obj; break; } } } site.selectedItem = selItem; }; w.setHandler(func); func(null); } else { func = function(event:*):void { var value:Object = w.getValue(); if ( value == null ) { site[prop] = null; } else { site[prop] = String(w.getValue()[labelField]); } }; w.setHandler(func); func(null); } } return w; }
回答
最好覆盖所讨论的属性并将其声明为final。