1

我的一位同事用 javascript 查看了我的代码,并告诉我不应该在控制器中使用视图。相反,我应该使用调解员。我完全迷路了。他要到下周才能有空,所以我在这里。

在我的应用程序中,我在控制器(伪代码)中初始化了一个视图,如下所示。

var controller = (function(){

   return {
      init: function()
      {
          this.view = new View("template");
          this.view.render();
      }
   }

})();

我不知道如何将视图与控制器分开并使用调解器来处理它们。

谁能给我一个想法或示例代码或概念?

4

1 回答 1

2

首先介绍一下 MVC 模式中 Ms、Vs 和 Cs 的角色:

三个部分:

Model-视图-控制器:

我们将应用程序/领域的不变本质称为模型(单数)。在面向对象的术语中,这将由一组类组成,这些类对底层问题进行建模和支持,因此它们将趋于稳定并且与问题本身一样长期存在。
模型(类)应该对与外部世界的连接了解多少?没有,绝对没有。

型号View- -控制器:

对于给定的情况,在给定的版本中,模型将有一个或多个接口,我们将其称为视图(复数)。在面向对象的术语中,这些将由一组类组成,这些类为我们提供“窗口”(通常是实际的窗口)。

模型视图- Controller

控制器是允许您操作视图的对象。稍微简化一下,控制器处理输入,而视图处理输出。控制器最了解平台和操作系统。视图完全独立于它们的事件是否来自 Microsoft Windows、X Windows 或其他。


你的同事想告诉你的是:

下图是 Zend 框架的序列流(近似),Zend 框架是 PHP 的 MVC 框架。

单击此处查看更大的图像。
Zend 框架调用


观察上图中的 Dispatcher(倒数第三个)。
对于您的情况,让我们只考虑以下内容:

  • Front.php :作为您的视图。
  • 调度员:你的同事提到的调解员。
  • MyController :作为您的控制器。

你需要做的是:
如果View必须触发一个事件,它不会自己处理这个事件。它将事件连同事件的参数(如果有)一起分派给Dispatcher 。调度员现在

  • 寻找能够处理此类事件的控制器。
  • 创建控制器
  • 将事件连同参数(如果有)一起传递给控制器​​。

控制器现在将:

  • 为活动做准备。
  • 执行事件。
  • 将结果集(如果有)返回给Dispatcher

Dispatcher现在将:

  • 将结果集(如果有)返回给View

视图现在将:

  • 渲染结果集(如果有)并呈现它。

为什么需要做这么多?
To keep the roles segregated and clear.

于 2012-01-11T23:17:23.707 回答