使用表示模型在Flex中添加元素

时间:2011-04-11 15:41:35

标签: flex actionscript-3 cairngorm presentation-model

我正在重构另一个开发人员编写的一些Flex代码,我正在实现一个PresentationModel方法,因为我喜欢将ActionScript与MXML分开。我发现的一个问题是原始的ActionScript代码添加/删除了MXML中的元素。

处理程序函数检查模型会发生什么,如果值正确,将从视图中创建或删除元素。将演示模型添加到视图中的广告元素的最佳方法是什么,并且仍然保持我目标的松散耦合。

我正在考虑使用表示模型调度的简单事件,并且视图可以列出用于传递要添加的元素的详细信息。还有其他解决方案吗?

由于

斯蒂芬

2 个答案:

答案 0 :(得分:1)

如果您正在使用演示模型,我会假设您有某些需要发生的数据。当动态添加/删除任何类型的项目时,我确保使其数据驱动以便于操作。如果您想要添加其他项目,请将另一个数据模型添加到您选择的dataProvider(List,ComboBox,DataGroup等)。

通过这种方法,您将从演示者到视图的逻辑抽象化。事件应仅用作您的视图以了解演示者何时完成某些操作的方式。可以通过这种方式接收数据(最好这样做)或者您可以将演示者中的数据绑定到dataProvider。两者都很好,我发现绑定更清洁,更简单。

答案 1 :(得分:0)

应该在视图中包含执行某些图形内容(绘制边框,设置样式,拖放管理,动画......等)的代码的每个部分,而不是表示模型。

对于这种图形,应该在PM中更改属性后执行内容,我们使用Cairngorm 3 Observer lib。基本上,它会监听表示模型中的一些更改,并允许您在View中执行一个函数。

<cg:ObserveValue 
    source="{ model.firstName }" value="{ Name.SARA }"  
    handler="runEffectFunction"/>

请参阅the documentation