【问题标题】:AngularJS models explanationAngularJS 模型解释
【发布时间】:2016-03-05 15:34:23
【问题描述】:

我对 angularjs 中的模型是什么感到非常困惑。在asp.net mvc中,我对模型的理解是定义领域对象的类,有点像DTO:

public class Person {
        public string PersonName { get; set; }
}

重量很轻。另一方面,我的业务逻辑不包含在此处,而是包含在存储库中,而存储库又具有接口。控制器通过接口向存储库请求数据。存储库过滤并检索数据,然后将其传递给控制器​​。我想有人可能会争辩说,存储库、接口和 DTO 共同构成了模型。

根据我当时的理解,一个角度模型,至少在它检索、操作和将数据传递给控制器​​的情况下,将是一个工厂/服务。对吗?

【问题讨论】:

  • 没有。模型是控制器范围内用于驱动视图的数据、变量和方法。控制器可以连接到服务/工厂以访问数据和方法,但如果不绑定到控制器模型(范围),这些服务不会影响视图

标签: angularjs model factory


【解决方案1】:

在 Angularjs 中,模型是 $scope 变量。我不知道 ASP.NET 中的 MVC,但是看到您的示例,我觉得作为比较,我们可以说 person 类位于 $scope 内。

同样从您的问题来看,在 ASP.NET 中,业务逻辑似乎不在控制器中。不知道控制器在 ASP.NET 中的作用是什么,但在 AngularJS 中,它是业务逻辑所在。

可能是this AngularJS Concepts page中的图表可能会让你更清楚。

【讨论】:

  • 我喜欢你提供了 Angular 文档的链接。谢谢。从我在其中读到的内容来看,控制器确实包含业务逻辑,但有时将业务逻辑更好地抽象为服务或工厂。我似乎你和 charlietfl 似乎同意,因为 $scope 包含数据。因此,您的模型真的不能包含业务逻辑,这将存在于您的控制器和服务中。对吗?
  • 对于 ASP.net MVC,控制器通过服务/存储库请求数据,服务/存储库将其放入域对象并将其传递回控制器,然后控制器将其传递给视图。
  • 没错。模型 ($scope) 仅包含数据。并且业务逻辑存在于控制器和服务中(我猜无论如何都在控制器中使用)。
  • @steveareeno 嗯.. 我明白了,在 Angular 中,数据是由 Angular 本身在控制器中提供的。数据和视图也有双向数据绑定,从某种意义上说,控制器可以只更改数据($scope)并在视图中自动更新:)
  • 甜蜜。我喜欢这个解释。感谢您的帮助!
猜你喜欢
  • 2018-06-07
  • 2011-12-12
  • 2016-04-01
  • 2014-12-11
  • 2021-10-19
  • 2016-08-29
  • 1970-01-01
  • 2018-08-30
  • 2011-02-10
相关资源
最近更新 更多