我正在使用MVVM的Flex应用程序。我知道建议在视图和视图模型之间建立一个1对1的映射关系。那么如何避免执行相同的计算并在多个视图中多次存储相同的数据?在视图模型中避免重复的数据和计算
例如,假设我有一个程序可以加载包含项目列表的项目文件。我的应用程序的主选项卡有一个导出按钮,只有在项目有效时才能启用,因此我在主选项卡的视图模型上创建isExportEnabled
属性。对此的计算涉及验证项目,方法是遍历项目中的每个项目并验证每个项目的属性。我有另一个有“打印项目摘要”按钮的选项卡,因此此选项卡的视图模型有isPrintEnabled
。该标志的值基于相同的标准,无论项目是否有效。
我可以把逻辑在其相应视图的模型确定这些值,但是然后我最终当一个项目被装载计算两次相同的值。
我可以将
isValid
移动到领域模型,但然后模型变得非规范化。如果在不更新“isValid”标志的情况下编辑保存的项目会怎样?我可以为整个项目制作一个全球“项目视图模型”,它计算项目是否有效,然后有
isExportEnabled
和isPrintEnabled
委托给它。不过,后来我结束了视图模型本文建议避免其中的一个层次:Applying the Presentation Model in Flex
感觉就像有做这种没有正确的方法。
感谢您的回答。我重写了一些问题,因为它不像我在二读时那么清楚。 – takteek