Apache flex 更改列表项Render取决于视图状态
我有一个列表,该项呈现如下所示:。 但是现在我需要启用或禁用按钮delete,这取决于我的列表所在的视图状态 这是我的视图(其中包含列表):Apache flex 更改列表项Render取决于视图状态,apache-flex,air,flex4,Apache Flex,Air,Flex4,我有一个列表,该项呈现如下所示:。 但是现在我需要启用或禁用按钮delete,这取决于我的列表所在的视图状态 这是我的视图(其中包含列表): 问题是,当屏幕使用状态“main”时,我只想启用itemRender中的delete按钮。我遇到了完全相同的问题 我注入了模型状态(例如modelState),它决定了renderer类中按钮的状态 <s:ItemRenderer> <fx:Script> <![CDATA[
问题是,当屏幕使用状态“main”时,我只想启用itemRender中的delete按钮。我遇到了完全相同的问题 我注入了模型状态(例如modelState),它决定了renderer类中按钮的状态
<s:ItemRenderer>
<fx:Script>
<![CDATA[
import spark.components.List;
[Bindable]
public var modelState:String;
public function deleteItem():void {
var parentList:List = owner as List;
// remove the item
parentList.dataProvider.removeItemAt(parentList.dataProvider.getItemIndex(data))
}
]]>
</fx:Script>
<s:HGroup>
<s:Label text="{data}" />
<s:Button id="remove" label="X" click="deleteItem()"
enable="{modelState=='main'}"/>
</s:HGroup>
</s:ItemRenderer>
是的,我知道这不是最好的决定 我遇到了完全相同的问题 我注入了模型状态(例如modelState),它决定了renderer类中按钮的状态
<s:ItemRenderer>
<fx:Script>
<![CDATA[
import spark.components.List;
[Bindable]
public var modelState:String;
public function deleteItem():void {
var parentList:List = owner as List;
// remove the item
parentList.dataProvider.removeItemAt(parentList.dataProvider.getItemIndex(data))
}
]]>
</fx:Script>
<s:HGroup>
<s:Label text="{data}" />
<s:Button id="remove" label="X" click="deleteItem()"
enable="{modelState=='main'}"/>
</s:HGroup>
</s:ItemRenderer>
是的,我知道这不是最好的决定 另一个选项是创建单独的ItemRenders并使用ItemRenderer函数 我从前面提出的类似问题中选取了这个示例,并对其进行了一些修改,以满足您的需要:
编辑:
这是使用的另一种解决方案。通过为每个状态声明不同的属性值,可以指定不同的ItemRenderer
<s:List id="theList"
width="393" height="223"
x="42" y="69"
dataProvider="{model.products}"
useVirtualLayout="false"
itemRenderer.main="com.png.vm.ui.components.ProductCartThumbnail"
itemRenderer="com.png.vm.ui.components.ProductCartThumbnailReadOnly">
另一个选项是创建单独的ItemRenders并使用ItemRenderer功能 我从前面提出的类似问题中选取了这个示例,并对其进行了一些修改,以满足您的需要:
编辑:
这是使用的另一种解决方案。通过为每个状态声明不同的属性值,可以指定不同的ItemRenderer
<s:List id="theList"
width="393" height="223"
x="42" y="69"
dataProvider="{model.products}"
useVirtualLayout="false"
itemRenderer.main="com.png.vm.ui.components.ProductCartThumbnail"
itemRenderer="com.png.vm.ui.components.ProductCartThumbnailReadOnly">
很好的解决方案,但我决定使用两个diff ItemRenderer。谢谢,这是一个很好的解决方案,但我决定使用两个不同的项目渲染器。谢谢。但实际上,我将我的2渲染器设置为这样:那也可以!使用这样的属性状态可能是一个更干净的解决方案。我会用你的密码更新我的答案。但实际上,我将我的2渲染器设置为这样:那也可以!使用这样的属性状态可能是一个更干净的解决方案。我会用你的密码更新我的答案。