Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将多个控制器中的AngularJS范围对象组合成一个对象_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 将多个控制器中的AngularJS范围对象组合成一个对象

Javascript 将多个控制器中的AngularJS范围对象组合成一个对象,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我的应用程序由几个控制器组成。它们各自将不同的数据收集到其范围对象中。现在,我正在改变处理数据的方式,因此将数据分离不再是一个选项(目标是将数据发送到PHP脚本进行PDF转换) 也就是说,我需要一种方法,要么让它们通过POST发送,要么让它们先组合成一个对象,然后再发送 我刚刚了解了angular.extend,但我不确定它是否支持组合来自不同控制器的对象,如果支持,它是如何实现的,在哪里实现的 它应该是一个新的控制器、一个服务还是其他什么?不需要把事情复杂化,这是服务(或工厂)的完美用途。服务

我的应用程序由几个控制器组成。它们各自将不同的数据收集到其
范围
对象中。现在,我正在改变处理数据的方式,因此将数据分离不再是一个选项(目标是将数据发送到PHP脚本进行PDF转换)

也就是说,我需要一种方法,要么让它们通过POST发送,要么让它们先组合成一个对象,然后再发送

我刚刚了解了angular.extend,但我不确定它是否支持组合来自不同控制器的对象,如果支持,它是如何实现的,在哪里实现的


它应该是一个新的控制器、一个服务还是其他什么?

不需要把事情复杂化,这是服务(或工厂)的完美用途。服务是单例的,因此您不必担心从每个控制器实例化相同的服务-只需创建一个函数,将所有控制器的数据分组并收集,就可以了

每个控制器都有权访问这些数据,因此将其发送到PHP也不是问题


简单的例子:

angular.module('app',[])
.controller('CtrlOne',函数(myService){
sendData(“一些数据”);
})
.controller('CtrlTwo',函数(myService){
sendData(“更多数据”);
})
.service('myService',function()){
var gatheredData=[];
返回{
sendData:函数(数据){
gatheredData.push(数据);
警报('当前数据:'+gatheredData.join(','));
},
getData:function(){
返回收集的数据;
}
}
})


我仍然不明白将对所有控制器的数据进行分组和收集的
功能应该位于哪里?我刚刚创建了一个工厂,下一步是将它包含在所有控制器中。如果你能提供更多的细节,那就太好了!Thxy你可以将你的工厂注入到每个需要提交材料的控制器中,然后从那里开始。工厂没有控制器,但控制器可以访问工厂。我感到很遗憾,你试图帮助我,而我不了解整个过程。假设工厂中有一个空对象,然后在第一个控制器中,我将该控制器的对象分配给工厂的对象。然后在第二个控制器中,我再次访问工厂对象(该阶段包含来自第一个控制器的数据),并将其数据附加到现有工厂对象。如果在控制器调用之间持久化工厂中的数据,这可能会起作用。这正是它应该如何工作的!由于工厂是单例的,所以数据仍然存在。让我给你写一个简单而快速的例子。是的,把这个聚集的数据变成更复杂的东西,或者给sendData添加另一个参数,这样你就知道了数据的来源,等等。。。但这应该可以做到。不客气!