对于变量的三个可能值,我有三个条件。在mxml代码中,我想为每个实例显示不同的数据网格。 有没有比为每个可能值编写三个布尔函数更短的方法,然后使用方法返回的布尔值作为是否将加载每个数据网格的参数?
答案 0 :(得分:0)
您可以直接将网格的MXML定义中的visible和includeInLayout属性绑定到布尔值或计算结果为布尔值的表达式。唯一的限制是您必须能够将评估表达为单个陈述。但是,你可以使用复合条件,你不能做一些事情,比如说存储变量然后检查它。你可以简单地把它拉下来:
<mx:DataGrid visible="{myObject=='state1'}" includeInLayout="{myObject=='state1'}"/>
<mx:DataGrid visible="{myObject=='state2'}" includeInLayout="{myObject=='state2'}"/>
<mx:DataGrid visible="{myObject=='state3'}" includeInLayout="{myObject=='state3'}"/>
请注意,由于创建了父容器,因此仍会导致创建所有三个网格。或者,您实际上可以使用状态来添加或删除特定网格...最终,最佳选择是创建一个网格定义并根据状态有条件地更改其属性。有很多方法可以解决这个问题,但有些方法比其他方法更好,因此请考虑在一周的视频和UIComponent生命周期中查看Flex,以确保您了解所选择的含义。
另外要注意,如果您需要复杂的条件,因为您使用的是XML,则需要使用
&放大器;放大器;
对于每个&符号,如
<mx:DataGrid visible="{myObject=='state3'&&someOtherThing=='whatever'}" includeInLayout="{myObject=='state3'&&someOtherThing=='whatever'}"/>
上次修改我建议使用此: http://livedocs.adobe.com/flex/3/html/help.html?content=using_states_3.html