gpt4 book ai didi

javascript - 将多个 Controller 中的 AngularJS 范围对象合并为一个对象

转载 作者:行者123 更新时间:2023-12-02 16:31:21 29 4
gpt4 key购买 nike

我的应用程序由多个 Controller 组成。它们每个都将不同的数据收集到其范围对象中。现在,我正在改变处理数据的方式,因此不再可以选择分离数据(目标是将数据发送到 PHP 脚本以进行 PDF 转换)。

话虽这么说,我需要一种方法来将它们完全通过 POST 发送,或者首先将它们组合成一个对象然后发送。

我刚刚发现了 angular.extend,但我不确定这是否支持组合来自不同 Controller 的对象,如果支持 - 它是如何以及在哪里完成的?

它应该是一个新的 Controller 、服务还是其他东西?

最佳答案

无需使事情复杂化,这是服务(或工厂)的完美用途。服务是单例的,因此您不必担心从每个 Controller 实例化相同的服务 - 只需创建一个函数来分组并收集来自所有 Controller 的数据,然后就可以开始了。

每个 Controller 都可以访问这些数据,因此将其发送到 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>

关于javascript - 将多个 Controller 中的 AngularJS 范围对象合并为一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28268260/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com