函数或类作为控制器

时间:2017-11-08 16:46:58

标签: angularjs ecmascript-6

当我在控制台中显示我的控制器(类)时,我看到所有依赖项都是可见的,并且我的依赖项的所有依赖项都可以被范围看到...

enter image description here

但我知道如果我使用函数,那么everthing应该是私有的。

我的问题是:在angularjs(1.6)中创建控制器的最佳方法是什么?类(ES6)和函数之间有什么区别。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下模式将这些依赖项保持为私有,而不必将它们全部分配给控制器对象。

function yourControllerFactory(yourDep1, yourDep2, ...) {
  class YourController {
    constructor() {
       // no longer have to assign every dependency to this object
    }
    ...
    doSomething() {
      yourDep1.doSomethingWithDep();
    }
  }
  return new YourController();
}

module('your-module').controller('yourController', yourControllerFactory);

这样,YourController的实例将无法访问您注入的依赖项。这种方式类似于过去定义控制器的方式。