我是Angular世界的新手,我主要使用.NET MVC架构,其中模型和控制器等实体之间有清晰的界限。
在我看来,这一点很清楚:
它们是两个单独的文件和两个不同的类型。没有人可以在asp.net视图和asp.net控制器之间混淆
然而,在Angular世界(显然是MVC架构)中,控制器看起来像下面链接中描述的内容:
https://scotch.io/tutorials/making-skinny-angularjs-controllers
对我来说,按照.NET标准,这是模型和控制器的混合体,因为它不仅携带数据(像模型)而且还带有函数**(就像Controller < /强>)**。不仅如此,模型实际上是Controller的一部分。
我的问题是,如果Angular中的模型看起来像上面链接中描述的模型,那么模型本身是什么样的?
答案 0 :(得分:3)
模型($ 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类似,但当然,$ scopes通过$ scope继承解析$ scope属性,但在ASPNET MVC中,子ViewData不从父VIewData继承。嗯......微软,这将是一个有用的功能:)
答案 1 :(得分:3)
<强>模型强>
在AngularJS中,术语模型是指存储在范围内的数据,用于在视图内使用。它可以是硬编码的值/对象,也可以是存储在范围内的服务调用上收到的响应。
上面的图片清晰地展示了如何在视图上使用模型。 AngularJS还支持双向数据绑定。即更新视图(绑定到特定模型)也会更新模型值。
<强>控制器强>
控制器的目的是为表达式和指令公开变量和功能。
如上所示,控制器与范围相关联,并且可以在与相应控制器关联的视图上访问范围内定义的所有模型。控制器可用于定义业务逻辑和处理事件等。
答案 2 :(得分:0)
范围是Angular应用程序中非常重要的组件。范围是表示应用程序“模型”的对象。它包含存储通过模板呈现给用户的数据的字段,以及当用户执行某些操作(例如单击按钮)时可以调用的功能。 对于mOre infor,请转到链接 https://docs.angularjs.org/api/ng/directive/ngModel