AngularJS真的是MVC吗?

Pau*_*sak 26 javascript model-view-controller angularjs

我正在查看AngularJS主页示例- 特别是"添加一些控件".我不太明白它如何映射到MVC模式.

或多或少很清楚,模板(index.html)可以被视为视图,TodoCtrl从todo.js构建的对象作为控制器,但模型在哪里?属性类似于ng-model映射到框架的一些内部部分,并且不直接暴露我们可以称为模型的对象.

将AngularJS称为MVC框架是否正确?

小智 22

MVC背后的核心思想是,在管理数据(模型),应用程序逻辑(控制器)和向用户呈现数据(视图)之间,您可以清楚地分离代码.视图从模型中获取数据以显示给用户.当用户通过单击或键入与应用程序交互时,控制器通过更改模型中的数据进行响应.最后,模型通知视图已发生更改,以便更新其显示的内容. 在Angular应用程序中,视图是文档对象模型(DOM),控制器 是JavaScript类,模型数据存储在对象属性中.


use*_*524 6

我没有读过Angular.但是,请记住,"真正的"MVC意味着模型包含业务逻辑,Controller负责将用户输入传递给模型,而View从模型中获取自己的数据.许多所谓的MVC框架实际上并没有以正确的方式实现MVC:它们使控制器过载负担很多,就像让Controller负责更新View一样.这不是控制器的目的,在这种情况下,你会得到所谓的"胖控制器".许多Web开发人员之间存在一种误解,认为View只是一个"模板".这既是真的,也是假的; 它是一个模板,但它直接从模型中获取自己的数据 - 而不是通过Controller.

但是当我开始说:我还没有读过Angular,但你可能已经自己了,你应该能够通过查看框架中不同的组件来确定Angular是否真的是一个MVC框架.


Jan*_*nen 4

属性映射到控制器中定义的范围变量中。例如,如果您有一些代表业务逻辑的 JS 对象,您可以将它们放入范围变量中,然后可以将属性映射到模型本身,而不是范围变量中的某些任意值。