Javascript 为什么Angular.JS中混合了模型和控制器的概念?
我对Angular world非常陌生,我主要使用.NET MVC体系结构,在该体系结构中,模型和控制器等实体之间有一个清晰的划分 在我看来,这是非常清楚的:Javascript 为什么Angular.JS中混合了模型和控制器的概念?,javascript,asp.net,angularjs,asp.net-mvc,Javascript,Asp.net,Angularjs,Asp.net Mvc,我对Angular world非常陌生,我主要使用.NET MVC体系结构,在该体系结构中,模型和控制器等实体之间有一个清晰的划分 在我看来,这是非常清楚的: 模型是数据的容器 控制器基本上是处理客户端业务和视图之间交互的函数集合 它们是两个独立的文件和两种不同的类型。有人不可能混淆asp.net视图和asp.net控制器 然而,在Angular world(这显然是一种MVC体系结构)中,控制器看起来像以下链接中描述的东西: 对于我来说,按照.NET标准,这是模型和控制器的混合体,因为它
- 模型是数据的容器
- 控制器基本上是处理客户端业务和视图之间交互的函数集合
我的问题是,如果角度模型看起来像上面链接中描述的那样,那么模型本身是什么样子?范围是角度应用中非常重要的组成部分。作用域是表示应用程序“模型”的对象。它包含存储通过模板呈现给用户的数据的字段,以及在用户执行某些操作(如单击按钮)时可以调用的函数。 欲了解更多信息,请点击链接
模型($scope)和视图(HTML)之间存在分离 是的,$scope上有一些方法是从视图中调用的,但这些方法本质上是控制器操作——它们是从控制器函数的闭包中执行的
app.controller('ctrl', function($scope) {
$scope.data = 'hello';
$scope.onclick = function(arg) {
$scope.data = 'hello world!';
}
});
Microsoft ASPNET MVC与Angular MVC惊人地相似:
MVC Controller = ngController
ViewData/ViewBag = $scope
Controller DI = Angular DI in controller function
Razor View Engine = ngRepeat, ngShow, ngModel, etc
RenderActions = Data-driven service-injected directives
RenderPartials = Read-only directives (data retrieved by another controller)
Click triggers controller action = ngClick triggers $scope handler in controller's function closure
Model Data Binding = AngularJS Data Binding
ModelState validation = ngModel validation
HTTP handlers/modules = HTTP interceptors
这让我想知道ASPNET MVC是否启发了Angular
注意:ViewData和$scope是类似的,但当然,$scope通过$scope继承来解析$scope属性,但在ASPNET MVC中,子ViewData不会从父ViewData继承。隐马尔可夫模型。。。微软,这将是一个有用的功能:)模型
在AngularJS中,术语模型是指存储在范围内的数据,以便在视图中使用。它可以是硬编码的值/对象,也可以是存储在作用域内的服务调用上接收到的响应
上图清楚地显示了模型在视图中的使用方式。AngularJS还支持双向数据绑定。i、 e.更新视图(绑定到特定模型)也会更新模型值
控制器
控制器的目的是向表达式和指令公开变量和功能
如上所示,控制器与作用域相关联,可以在与相应控制器关联的视图上访问作用域内定义的所有模型。控制器可用于定义业务逻辑和处理事件等