Angular中的控制器代码组织

时间:2012-08-30 13:48:17

标签: angularjs

所以,我正处于Angular的第一个重大项目之中。我有一个控制器正在做一个 ton 的legwork,它已达到成千上万行JavaScript的程度。

我想以某种方式解决这个问题,但我似乎无法在任何地方找到一个可靠的例子。代码主要由用于对对象进行计算的函数组成,因此指令和模块似乎不是正确的答案,但我可能在那里错了。

你们是如何在大型Angular项目中组织代码的?我应该把它搞砸,还是有一种理智的方式将其拆分成易于扫描的文件?

3 个答案:

答案 0 :(得分:26)

我建议将这些对象及其相关计算中的至少一部分放入服务中,然后将服务注入控制器。有关封装某些数据的服务示例,请参阅Sticky Notes Part 1 blog entry,并提供访问/操作该数据的方法。

查看是否可以将控制器拆分为多个控制器,每个控制一个控制器。视图可以与页面一样大,也可以只是页面上的一些块/块。

引用我最近看到的谷歌小组帖子:“我更倾向于将角度控制器视为我的观点的愚蠢api / configs,并将所有繁重的工作留给服务。” - reference

答案 1 :(得分:23)

当你在控制器中时,你需要问一些事情。

  1. 你在控制器中进行任何DOM操作吗?这是肯定的NO。不要那样做。它始终属于指令部门。

  2. 您是否在控制器中编写任何业务逻辑?这也是一个NO。在大多数情况下,您的业务逻辑应存在于服务中。这是适合它的地方。

  3. 现在,看看你的控制器。它没有这两件事并且仍然大于1000行吗?这是不太可能的,但即使它以某种方式发生,然后考虑将您的控制器分解为更小的控制器。必须根据视图完成控制器的中断。

    总而言之,您的控制器只是在HTML中粘贴业务逻辑和视图的地方。从技术上讲,它应该不包含除这些胶水之外的任何东西。

答案 2 :(得分:0)

我通常创建一个Util工厂(现在似乎是Angular而不是服务的方式)并让它将任何共享逻辑作为一组方法返回。

https://gist.github.com/lamba/c275f5f010090632209e