Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Angular.JS中混合了模型和控制器的概念?_Javascript_Asp.net_Angularjs_Asp.net Mvc - Fatal编程技术网

Javascript 为什么Angular.JS中混合了模型和控制器的概念?

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标准,这是模型和控制器的混合体,因为它

我对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.更新视图(绑定到特定模型)也会更新模型值

控制器

控制器的目的是向表达式和指令公开变量和功能

如上所示,控制器与作用域相关联,可以在与相应控制器关联的视图上访问作用域内定义的所有模型。控制器可用于定义业务逻辑和处理事件等