在我正在开发的项目中,我们刚刚开始使用Flex 4.我们不使用任何特定的框架,并且管理需要全视图/分离体系结构。基本原则是每次将ActionScript类作为模型关联到.mxml视图。Flex4 - 编码体系结构,视图/模型分离
我很难理解如何将两者联系起来:谁引用了谁,以及我在视图中可以在多大程度上消除脚本部分。
我真的很感谢这一个的任何见解。
谢谢
在我正在开发的项目中,我们刚刚开始使用Flex 4.我们不使用任何特定的框架,并且管理需要全视图/分离体系结构。基本原则是每次将ActionScript类作为模型关联到.mxml视图。Flex4 - 编码体系结构,视图/模型分离
我很难理解如何将两者联系起来:谁引用了谁,以及我在视图中可以在多大程度上消除脚本部分。
我真的很感谢这一个的任何见解。
谢谢
您还可以使用“Presentation Model”模式,它与Silverlight世界中的MVVM非常相似。不同之处在于,在Flex中,Silverlight需要更多的管道,这非常容易。
架构是这样的:
观引用PM并将数据绑定到PM中的属性。 PM包装模型并添加UI级验证,UI级行为和格式数据。
“分居提示模式” 像PM,MVC和MVP是下面的 “ilities” 真的很重要:
通常,模型应该几乎不包含任何逻辑。视图包含显示模型提供的数据的逻辑。这样的视图访问模型,而不是相反。这也可以为同一组数据定义多个不同的视图。
在Flex中,数据绑定和内容提供者都是将数据集成到MXML结构中的好方法。尤其是数据绑定,您可以在不考虑它的情况下使用内容;特别是没有自己定义所有的引用(所以你不需要在代码中写这些引用)。
要消除视图中的其余逻辑,通常在MVC体系结构中使用控制器。控制者是视图和模型之间的一些“中间人”,并且应该处理这些数据。所以你的应用程序使用的所有逻辑都应该在那里。这样你就可以严格区分模型(只包含纯数据),视图(只显示数据)和控制器(将它们集中在一起并添加应用程序逻辑)。有关该主题的更多信息,请参阅Wikipedia article。
作为最后一点,有一些框架使MVC更容易管理。 ActionScript最为人所知的可能是RobotLegs。
不应该是对逻辑内容的另一种方式吗? 我的意思是不应该模型定义如何显示视图? – Sandy 2010-11-19 10:54:32
@Sandy:不。模型应该是不可知的。它不应该真的知道一个观点存在。如果你在你的模型中有观点概念,那么你可能做错了。这就是MVC中的“控制器”,MVP中的“演示者”或“演示模型”用于...了解View存在并便于模型数据与/从视图显示/修改。 – 2010-11-19 11:07:13
谢谢,看起来这个解决方案与我们正在采用的架构非常相似。如果我理解正确,我需要有一个模型的属性映射视图中的每个控件,并直接将这些控件的任何更改分配给属性? – Sandy 2010-11-19 12:51:08
其他问题:在PM模型中,一旦您开始让其他自定义子组件拥有自己的模型,您如何在没有控制器的情况下管理它们之间的通信? – Sandy 2010-11-19 13:00:56
因此,如果我正确理解你的问题,我经常将模型作为PM的公共属性,以便在无需适应视图时直接绑定到模型中的道具。对于需要适应视图的事情,我创建自定义获取器来进行自适应。就PM之间的通信而言,您可以使用通用模型......或者您可以使用某种事件总线。我使用轻量级Inversion of Control容器将模型和事件总线注入到PM中。 – 2010-11-19 13:19:58