我不想重复我在其中一个控制器中使用的相同代码,因此我有两个选择:
$controller
服务以获得某种继承ng-controller
上使用多个element
- 但我不知道这是否可行?实现某种控制器继承的最佳解决方案是什么?
答案 0 :(得分:5)
引用Angular Docs: Controller Inheritance Example:
Angular中的Controller继承基于Scope继承。
就example in the docs而言,您可以将常用方法放在$scope
ChildCtrl
内,然后$scope
内BabyCtrl
内自动提供这些方法1}}。
虽然就个人而言,我更喜欢将公共代码添加到服务中并将该服务注入多个控制器。
答案 1 :(得分:3)
混合控制器没有问题。您不能在同一元素中使用ng-controller
两次,因此您需要注入$controller
或创建一个绑定到控制器的指令。
在元素的主控制器中注入$controller
没有多大意义,而是创建一个绑定到组件化控制器的指令,这样,你就会对一个行为进行组件化。请参阅此回答When to write a directive?以了解我所说的内容。
控制器用于控制$scope
,并且您无法扩展控制器。让多个控制器更改单个作用域并将其用作它们之间的通信媒介是没有问题的。
如果您有重复操作但不一定需要范围,只需使用服务,就像获取数据,操纵对象,计算等一样。
答案 2 :(得分:2)
您还可以考虑将常用功能隔离到服务中。