1

   我已经在 SO 上搜索过这个问题,但我基本上没有找到关于这个特定场景的问题;因此,我问的理由。
    我对 MVC 模式有一个基本的、抽象的理解:控制器根据需要的操作调用正确的模型;模型包含实际的业务/数据逻辑,视图显示结果。我无法理解的是实际的实现。
   最初,我的假设是:控制器调用模型;Model处理信息,并将数据返回给Controller;控制器调用视图,将此数据传递给视图,视图只是显示它。在阅读了更多关于 MVC 的文章后,我发现 Model 并没有真正将数据传递回 Controller;相反,它会触发一个事件,它允许控制器调用正确的视图。
我的问题集中在这个事件触发部分:

   Q.1:必须真的触发一个事件吗?一旦Model完成处理,将控制权交还给Controller,Controller就不能简单的调用View吗?
   Q.2:在实际实现中,Model对象被注入到Controller类中。所以,模型对象基本上不知道控制器叫什么。它如何知道向哪个控制器触发事件​​?我们怎么知道 Controller 期待那个通知?
   Q.3:Controller调用View,将当前的Model对象注入到View中,View可以使用它来获取需要的数据。这是正确的还是错误的?如果错了,为什么错了,正确的方法是什么?
   我已经在这里和其他网站上阅读了关于 MVC 的问题,查看了 MVC 图表,但我无法真正按照应该连接的方式连接这些点。
   谢谢。

4

1 回答 1

0

关于如何将 MVC 上的不同组件链接在一起有很多方法。我认为没有“黄金法则”。

我按照这张图片所示的方式使用它:

在此处输入图像描述

对象的创建是这样的:

  1. app 对象根据路由创建一个控制器。路由器被注入到控制器中。
  2. 控制器根据路由创建模型。该模型由 IoC 容器创建。
  3. 控制器创建一个视图,并将模型注入到视图中。

在我的情况下,我可以这样回答你的问题:

Q1:不,我不使用事件。没有必要。控制器调用模型,完成后模型具有状态,并且可以被视图使用。

Q2:我用另一种方式做,控制器创建模型。该模型不了解控制器或视图。

Q3:这是我实现它的方式。

于 2012-09-17T18:39:43.073 回答