我的一位同事用javascript审查了我的代码并告诉我不应该在控制器中使用视图。相反,我应该使用调解员。我完全迷失了。他将在下周才开放,所以我在这里。
在我的应用程序中,我在控制器(伪代码)中初始化一个视图,如下所示。
var controller = (function(){
return {
init: function()
{
this.view = new View("template");
this.view.render();
}
}
})();
我不知道如何将视图与控制器分开,并使用调解器来处理它们。
有谁可以请给我一个想法或示例代码或概念?
答案 0 :(得分:3)
首先谈谈Ms,Vs& amp;的角色。 MVC模式中的Cs:
这三部分:
Model
- 视图 - 控制器:我们将调用应用程序/域的不变本质,模型(以单数形式)。在面向对象的术语中,这将包括一组模型和支持底层问题的类,因此它们将趋于稳定并且与问题本身一样长寿。
模型(类)应该知道多少与外界的联系?没什么,绝对没有。
View
- 控制器:对于给定的情况,在给定的版本中,将有一个或多个与模型的接口,我们将其称为视图(复数)。 在面向对象的术语中,这些将包含一组类,它们为我们提供了“窗口”(通常是实际的窗口)。
Controller
控制器是一个允许您操纵视图的对象。过度简化了一点,控制器在视图处理输出时处理输入。控制器拥有最丰富的平台和操作系统知识。视图与其活动是来自Microsoft Windows,X Windows还是其他任何内容完全无关。
你的同事试图告诉你的是:
下面的图片是与Zend框架有关的序列流程(近似),它是PHP的MVC框架。
点击here可获得更大的图片
观察上图中的Dispatcher(倒数第3个)。
让我们只考虑以下情况:
- Front.php:作为你的观点。
- 调度员:你的同事提到的调解员。
- MyController:作为你的控制器。
你需要做的是:
如果 View 必须触发事件,它将不会自行处理事件。它将事件发送到 Dispatcher 以及事件的参数(如果有的话)。
Dispatcher 现在
- 寻找能够处理此类事件的控制器。
- 创建控制器
- 将事件连同参数(如果有)一起传递给控制器。
控制器现在:
- 准备活动。
- 执行活动。
- 将结果集(如果有)返回 Dispatcher 。
Dispatcher 现在将:
- 将结果集(如果有)返回 View 。
查看现在:
- 渲染结果集(如果有)并显示它。
为什么需要这么做?
To keep the roles segregated and clear
。