我已经阅读了几篇关于正确使用angularjs实体的帖子:服务,工厂,控制器和指令。
我特别关注的是控制器和服务的比较。没有帖子告诉我控制器可以做什么服务不能做什么,反之亦然。
这可以列出,还是只是在角度使用中规范的问题?
答案 0 :(得分:66)
控制器通常用于绑定视图。控制器管理视图的生命周期,应该被视为视图控制器。将为视图的每个实例创建一个新控制器,这意味着如果您离开某个视图,然后再返回 - 或者如果您有多个特定视图的实例,则每次都会创建一个新控制器
服务通常用作应用程序的业务逻辑。服务类似于单例,因为它们只创建一次,并且实例在应用程序的整个生命周期中都得到维护。它是放置许多视图或组件所需的逻辑函数的好地方,并且还包含需要在应用程序的多个区域中访问的全局缓存。
答案 1 :(得分:13)
控制器 - 职责:初始化视图,调解视图/范围与服务之间的交互。它依赖于视图和模型,但更关注视图并使其工作。
服务 - 职责:提供不依赖于视图或控制器的业务服务。它主要关注的是提供服务,无论消费者(控制器/视图/其他服务)如何。
我不相信持久性是否会影响差异。
答案 2 :(得分:9)
根据AngularJS文档,https://docs.angularjs.org/guide/concepts
控制器与视图相关的业务逻辑有关。另一方面,服务与独立于视图的可重用业务逻辑有关。
答案 3 :(得分:1)
除了上面所说的。当应用程序不是那么大时,控制器也可能保留应用程序的逻辑。但随着应用程序的增长,您需要移动逻辑以使用服务(如工厂)。这将允许您的应用程序所需的变量和函数可以轻松访问。