【发布时间】:2011-07-26 02:28:37
【问题描述】:
我正在开发一个使用 MVVM 的 Flex 应用程序。我知道建议在视图和视图模型之间进行一对一的映射。如果在多个视图中需要相同的数据,我该如何避免多次执行相同的计算和存储?
例如,假设我有一个程序可以加载由项目列表组成的项目文件。我的应用程序的主选项卡有一个导出按钮,只有在项目有效时才应启用该按钮,因此我在主选项卡的视图模型上创建了一个 isExportEnabled 属性。对此的计算涉及通过迭代项目中的每个项目并验证每个项目的某些属性来验证项目。我有另一个标签,它有一个“打印项目摘要”按钮,所以这个标签的视图模型有isPrintEnabled。此标志的值基于相同的标准,无论项目是否有效。
我可以将用于确定这些值的逻辑放在它们各自的视图模型中,但最终在加载项目时会计算两次相同的值。
我可以将
isValid移至域模型,但随后模型变得非规范化。如果编辑保存的项目而不更新“isValid”标志怎么办?我可以为整个项目创建一个全局“项目视图模型”,计算项目是否有效,然后让
isExportEnabled和isPrintEnabled委托给它。但是,我最终得到了本文建议避免使用的视图模型层次结构:Applying the Presentation Model in Flex
感觉好像没有正确的方法来做到这一点。
【问题讨论】:
标签: apache-flex mvvm viewmodel