我们说我有一个控制器,如:
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比服务中使用的元素要多得多。
此外,这有利于重复使用(正如我在生产中发现的那样)。
我的问题是:这是一个反模式还是有效使用"控制器作为"宾语? 现在,如果这是反模式,那应该做什么呢?
提前致谢...
答案 0 :(得分:1)
这里没有什么可以称之为反模式。但是也没有什么好处,因为它要求服务知道vm
,对现有vm
属性的任何更改都会影响控制器的范围(不需要以理想的方式) )。
现在,如果这是反模式,那应该做什么呢?
将本地变量传递给服务并在需要时将其合并到控制器的范围内?