在我的一个工程中遇到一个问题:判断语句if的条件不满足,但是却进到了条件的执行语句中。也就是判断语句成透明了。具体的情况,见下面的代码,红色的部分就是我出现问题的地方:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var initDG:ArrayCollection = new ArrayCollection([
{Company: 'Acme', Contact: 'Bob Jones',
Phone: '413-555-1212', City: 'Boston', State1:[{label:"好",data:"1"},{label:"短",data:"2"}]},
{Company: 'Allied', Contact: 'Jane Smith',
Phone: '617-555-3434', City: 'SanFrancisco', State1:[{label:"好",data:"1"},{label:"坏",data:"2"}]}
]);
[Bindable]
public var initCMB:ArrayCollection = new ArrayCollection([{label:"长",data:"1"},{label:"短",data:"2"}]);
[Bindable]
public var inlineEditor:ClassFactory = new ClassFactory(mx.controls.ComboBox);
private function init():void
{
this.myGrid.columns[4].labelFunction = gridlabelfunc;
inlineEditor.properties= {dataProvider:this.initCMB,labelField :"{data.State1}",labelFunction:labelfunc};
}
private function gridlabelfunc(item:Object,pat:Object = null):String
{
if (!item.state1)
{
return '';
}
else
{
return item.State1["label"];
}
}
private function labelfunc(item:Object):String
{
return item.label;
}
private function show():void
{
this.myGrid.columns[0].
txtshow.text = myGrid.dataProvider[0]["State"]["label"];
}
]]>
</mx:Script>
<mx:DataGrid id="myGrid"
variableRowHeight="true"
dataProvider="{initDG}"
editable="true" color="#11B8DC">
<mx:columns>
<mx:DataGridColumn dataField="Company" editable="false"/>
<mx:DataGridColumn dataField="Contact"/>
<mx:DataGridColumn dataField="Phone"/>
<mx:DataGridColumn dataField="City"/>
<mx:DataGridColumn dataField="State1"
width="150"
editorDataField="selectedItem"
itemEditor="{inlineEditor}"/>
</mx:columns>
</mx:DataGrid>
<mx:TextInput x="217" y="192" id="txtshow"/>
<mx:Button x="440" y="192" label="show_state" click="show()"/>
</mx:WindowedApplication>
还请大家帮忙看看是怎么回事?小弟先谢过了。