我的应用程序由几个控制器组成。它们中的每一个都将不同的数据收集到其scope
对象中。现在,我正在改变处理数据的方式,因此分离数据不再是一个选项(目标是将数据发送到PHP脚本进行PDF转换)。
话虽这么说,我需要一种方法让它们完全通过POST发送,或者先将它们组合成一个对象然后发送。
我刚刚发现了angular.extend,但我不确定这是否支持组合来自不同控制器的对象,如果确实如此 - 它是如何以及在何处完成的?
它应该是新的控制器,服务还是别的什么?
答案 0 :(得分:2)
无需复杂化,这是服务(或工厂)的完美用途。服务是单件,所以你不必担心从每个控制器实例化同一个 - 只需创建一个功能,将所有控制器中的数据分组和收集,你就可以了。
每个控制器也可以访问这些数据,因此将其发送给PHP也不是问题。
简单示例:
angular.module('app', [])
.controller('CtrlOne', function(myService) {
myService.sendData('some data');
})
.controller('CtrlTwo', function(myService) {
myService.sendData('even more data');
})
.service('myService', function() {
var gatheredData = [];
return {
sendData: function(data) {
gatheredData.push(data);
alert('Current data: ' + gatheredData.join(', '));
},
getData: function() {
return gatheredData;
}
}
})

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="CtrlOne"></div>
<div ng-controller="CtrlTwo"></div>
</div>
&#13;