2

在我在 StackOverflow 上看到的围绕 MVC 架构的大多数帖子中,人们都说模型应该只从控制器进行通信,而不是从视图进行通信。

我对此有点困惑,因为当您使用 Google MVC 时: - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller - http://i.msdn。 microsoft.com/dynimg/IC108622.gif 图形似乎表明存在从视图直接到模型的通信。

我想知道的具体应用程序是一个 Ajax/jQuery 分层选择框,就像这里的http://kotowicz.net/jquery-option-tree/demo/demo.html一样。每次选择后,我都在考虑从模型中获取下一个框的数据。我正在使用 Codeigniter 框架。

就在这里的最佳实践进行了一些专业知识之后。

4

2 回答 2

2

当你有一个以 XHR 为中心的应用程序时,实际上有两个 MVC 三元组是有意义的。一个用于前端,一个用于后端。前端会将后端 MVC 仅视为数据源(与后端模型层中的数据抽象结构处理数据库、缓存和其他形式的存储的方式相同)。

基本上,您的“ajax 应用程序”不是view。它应该是一个完全实现的应用程序。当然,如果您实际上是在创建一个大型 XHR 驱动的应用程序,那么这样做是有意义的。

通常,您在浏览器中看到的不是视图。这只是视图创建的响应。在 web 上下文中,MVC 应用程序的用户是 web-browser


在此处输入图像描述 来源:维基百科

上图表示经典 MVC和 Model2 MVC (也称为“Web MVC”)中的简化信息流。它们之间的区别来自网络的本质:每次用户发送输入时,它都希望收到响应。这意味着时间上没有歧义。MVC 三元组的所有部分仅在发送响应之前存在。没有观察模型层的观点。

Web 应用程序中的 View 实际上是实例,它包含所有 UI 逻辑并负责将响应发送到浏览器。它创建的响应可以是 HTML(由多个模板组合而成)、JSON 或 XML 文件。或者可能只是 HTTP 位置标头。

PS您可能会发现此答案与您的学习相关。

于 2012-10-31T22:25:52.100 回答
0

我认为第二个链接上的图像是错误的,因为正确的方法应该是控制器与模型通信。如果视图与模型直接通信,则表示html代码与php大语句混合,这是错误的。

于 2012-11-01T04:21:05.987 回答