【问题标题】:AngularJs: Passing "controller as" to a service, is this good practice?AngularJs:将“控制器作为”传递给服务,这是一种好习惯吗?
【发布时间】:2015-03-25 19:57:03
【问题描述】:

假设我有一个这样的控制器:

angular.app("myapp",[]).controller("MyCtrl", function (MyService){

         var vm = this;

         vm.value1 = something();
         vm.array1 = somethingElse;

        //notice that I pass the whole controller as object to the service.
        MyService.getData(vm); 

         //do something with data...
         doWithNewData(vm.elementCreatedByMyService);

}). etc...

现在,传递 vm 本身似乎是有道理的,因为我不需要传递多个值并且多个控制器调用此服务。

这似乎有点矫枉过正,因为 vm 当然比服务中使用的元素要多得多。

此外,这有利于重用(正如我在生产中发现的那样)。

然后我的问题是:这是一种反模式还是“控制器作为”对象的有效使用? 现在,如果这是一个反模式,应该怎么做呢?

提前谢谢...

【问题讨论】:

    标签: angularjs anti-patterns


    【解决方案1】:

    这里称其为反模式并没有什么真正的犯罪行为。但是也没有什么特别好的,因为它要求服务知道vm,对现有vm 属性的任何更改都会影响控制器的范围(不是以理想的方式需要)。

    现在,如果这是一个反模式,应该怎么做?

    将局部变量传递给服务并在需要时将其合并到控制器的作用域中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 2012-05-14
      • 2018-11-17
      • 2014-09-22
      • 1970-01-01
      • 2017-06-21
      • 2014-08-27
      • 1970-01-01
      相关资源
      最近更新 更多