这种大年夜经典MVC到Javascript MVC的1对1转化,导致控制器的角色有点难堪。MVC如许的构造的┞俘确性在于,任何界面都须要面对一个用户,而controller “是用户和体系之间的链接”。在经典MVC中,controller要做的工作多半是派发用户输入给不合的view,并且在须要的时刻大年夜view中获取用户输仁攀来更改model,而Web以及绝大年夜多半如今的UI体系中,controller的职责已经被体系实现了。因为某种原因,控制器和视图的分界线越来越模糊,也有认为,view启动了action理论上应当把view归属于controller。比如在Backbone中,Backbone.View和Backbone.Router一路承担了controller的义务。这就为MVC中controller的衍变埋下了伏笔。
MVP
- // controller:
- function PhoneListCtrl($scope) {
- // 数组中存储的对象是手机数据列表
- $scope.phones = [
- {"name": "Nexus S",
- "snippet": "Fast just got faster with Nexus S."},
- {"name": "Motorola XOOM™ with Wi-Fi",
- "snippet": "The Next, Next Generation tablet."},
- {"name": "MOTOROLA XOOM™",
- "snippet": "The Next, Next Generation tablet."}
- ];
- }
背景:
MVP(model-view-Presenter)是经典MVC设计模式的一种衍生模式,是在1990年代Taligent公司创造的,一个用于C++ CommonPoint的模型。背景上不再考据,直接上图看一下与MVC的不合。

MVP模式
经典MVC中,一对controller-view绑缚起来表示一个ui组件,controller直接接收用户输入,并将输入转为响应敕令来调用model的接口,对model的状况进行修改,最后经由过程不雅察者模式对view进行从新衬着。
另一个显而易见的不合在于,MVC是一个圆,一个轮回的过程,但MVP不是,依附Presenter作为核心,负责大年夜model中拿数据,填充到view中。常见的MVP的实现是被动视图(passive view),Presenter不雅察model,不再是view不雅察model,一旦model产生变更,就会更新view。Presenter有效地绑定了model到view。view裸露了setters接口以便Presenter可以设置数据。对于这种被动视图的构造,没有直接数据绑定的概念。然则他的好处是在view和model直接供给更清楚的分别。然则因为缺乏数据绑定支撑,意味着不得不零丁存眷某个义务。在MVP里,应用法度榜样的逻辑重要在Presenter来实现,个中的view是很薄的一层。
MVVM
- <GroupBox Header="绑定对象">
- <StackPanel Orientation="Horizontal" Name="stackPanel1">
- <TextBlock Text="学号:"/>
- <TextBlock Text="{Binding Path=StudentID}"/>
- <TextBlock Text="姓名:"/>
- <TextBlock Text="{Binding Path=Name}"/>
- <TextBlock Text="入学日期:"/>
推荐阅读
【51CTO.com快译】关于收集恐怖晃荡的消息近期层出不穷。全世界正在遭受不合程度的收集恐怖主义,包含真正的恐>>>详细阅读
本文标题:前端MVC变形记
地址:http://www.17bianji.com/lsqh/36386.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示