AngularJS:控制器与服务

AngularJS:控制器与服务,angularjs,service,controller,Angularjs,Service,Controller,我读过几篇关于正确使用angularjs实体的帖子:服务、工厂、控制器和指令 我特别关心的是控制器和服务的比较。但没有一篇帖子告诉我什么是控制器可以做服务不能做的事情,反之亦然 这是可以列出的,还是仅仅是angular用法的规范问题 控制器通常用于与视图绑定。控制器管理视图的生命周期,应视为视图控制器。将为视图的每个实例创建一个新的控制器,这意味着如果您离开某个视图,然后再次返回,或者如果您有某个视图的多个实例,则每次都将创建一个新的控制器 服务通常用作应用程序的业务逻辑。服务在创建一次的意义上

我读过几篇关于正确使用angularjs实体的帖子:服务、工厂、控制器和指令

我特别关心的是控制器和服务的比较。但没有一篇帖子告诉我什么是控制器可以做服务不能做的事情,反之亦然


这是可以列出的,还是仅仅是angular用法的规范问题

控制器通常用于与视图绑定。控制器管理视图的生命周期,应视为视图控制器。将为视图的每个实例创建一个新的控制器,这意味着如果您离开某个视图,然后再次返回,或者如果您有某个视图的多个实例,则每次都将创建一个新的控制器


服务通常用作应用程序的业务逻辑。服务在创建一次的意义上类似于单例,并且实例在应用程序的整个生命周期中都得到维护。这是一个放置许多视图或组件所需的逻辑功能的好地方,还可以保存全局缓存,全局缓存需要在应用程序的多个区域中访问。

控制器-职责:初始化视图,调解视图/范围和服务之间的交互。它依赖于视图和模型,但更关心视图并使其工作

服务-职责:提供不依赖于视图或控制器的业务服务。它的主要关注点是提供服务,而不考虑消费者(控制器/视图/其他服务)


我不相信持久性是否会导致差异。

根据AngularJS文档


控制器与视图相关的业务逻辑有关服务则与独立于视图的可重用业务逻辑相关

除了上面所说的以外。当应用程序不太大时,控制器也可以保存应用程序的逻辑。但随着应用程序的增长,您需要移动逻辑以使用服务(如factory)。这将使应用程序周围所需的变量和函数易于访问。

因此关键字是persistence。。。谢谢。我想说的是持久性,以及使用ng controller=“MyController as ctrl”方法从视图中引用函数和变量的能力另一组关键字:共享代码/数据。除了持久性,服务的一个重要特性是它的代码可以很容易地在多个控制器/指令/组件之间共享。例如,在我现在正在构建的一个应用程序中,我为我的私有REST API提供了一个服务——这个服务可以在任何地方注入和使用。“试图对一个控制器做同样的事情是不必要的困难。@JasonvanderZeeuw公平地说,这是我在谷歌搜索时发现的第一个结果。所以OP问了我一个问题,帮了我一个忙。@JasonvanderZeeuw你能不能安静地传递链接?