首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Angular.JS中混合了模型和控制器的概念?

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

Stack Overflow用户
提问于 2015-12-09 04:46:45
回答 3查看 92关注 0票数 2

我对棱角世界非常陌生,我主要使用的是.NET MVC架构,其中模型和Controller这样的实体之间有一个清晰的界限。

我认为以下几点是很清楚的:

  • 模型是数据的容器
  • 控制器基本上是处理客户端业务和视图之间交互的函数的集合。

它们是两个独立的文件和两种不同的类型。任何人都不可能混淆asp.net视图和asp.net控制器

然而,在角度世界(这显然是MVC架构)中,控制器看起来就像下面的链接所描述的那样:

https://scotch.io/tutorials/making-skinny-angularjs-controllers

对我来说,按照.NET标准,这是模型和控制器的混合体,因为它不仅携带数据(类似于模型),而且还携带函数**(就像Controller )*。不仅如此,模型实际上是控制器的一部分。

我的问题是,如果一个角度上的模型看起来像上面的链接中描述的模型,那么模型本身是什么样的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-09 05:20:39

模型

在AngularJS中,术语模型是指存储在作用域内的数据,以便在视图中使用。它可以是硬编码的值/对象,也可以是存储在作用域中的服务调用上接收到的响应。

上面的图像清楚地显示了模型是如何在视图上使用的。AngularJS还支持双向数据绑定.也就是说,更新视图(它绑定到特定的模型)也会更新模型值。

控制器

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

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

票数 3
EN

Stack Overflow用户

发布于 2015-12-09 05:07:56

模型($scope)和视图(HTML)之间是分离的。

是的,在$scope上有一些方法是从视图中调用的,但它们本质上是控制器操作--它们是从控制器函数的闭包中执行的。

代码语言:javascript
运行
复制
 app.controller('ctrl', function($scope) {
       $scope.data = 'hello';
       $scope.onclick = function(arg) {
             $scope.data = 'hello world!';
        }
 });

Microsoft ASPNET与角MVC非常相似:

代码语言:javascript
运行
复制
 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是否激发了角..。

注意: VIewData和$scope是相似的,但是当然,$scopes通过$scope继承解决$scope属性,但是在ASPNET中,子ViewData不继承父ViewData。嗯..。微软,这将是一个有用的特性:)

票数 3
EN

Stack Overflow用户

发布于 2015-12-09 04:58:31

范围是角应用中非常重要的组成部分。作用域是表示应用程序的“模型”的对象。它包含存储通过模板呈现给用户的数据的字段,以及当用户执行某些操作(例如单击按钮)时可以调用的函数。对于mOre Go For,请使用链接https://docs.angularjs.org/api/ng/directive/ngModel

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34170930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档