1

我不想重复我在其中一个控制器中的相同代码,所以我有两个选择:

  • 在其他控制器中使用$controller服务进行某种继承
  • ng-controller同时使用多个element- 但我不知道这是否可能?

实现某种控制器继承的最佳解决方案是什么?

4

3 回答 3

5

引用Angular 文档:控制器继​​承示例

Angular 中的控制器继承基于 Scope 继承。

文档中的示例而言,您可以将常用方法放在$scope里面,然后这些方法将自动在里面ChildCtrl可用。$scopeBabyCtrl

尽管就个人而言,我更喜欢将通用代码添加到服务中并将该服务注入到多个控制器中。

于 2013-06-03T12:16:36.903 回答
3

混合控制器没有问题。但是,您不能ng-controller在同一个元素中使用两次,因此您需要注入$controller或创建一个绑定到控制器的指令。

在元素的主控制器内部注入没有多大意义$controller,相反,创建一个绑定到组件化控制器的指令,这样,您将组件化一个行为。请参考这个答案什么时候写指令?明白我说的话。

控制器旨在控制$scope,您没有办法扩展控制器。让多个控制器更改单个范围并将其用作它们之间的通信媒介是没有问题的。

仅当您有不需要范围的重复操作时才使用服务,例如获取数据、操作对象、计算等。

于 2013-06-03T13:17:06.097 回答
2

您还可以考虑将通用功能隔离到服务中。

于 2013-06-03T13:02:26.957 回答