2015-02-01 2 views
0

내 앱은 여러 컨트롤러로 구성됩니다. 각각은 서로 다른 데이터를 scope 개체로 수집합니다. 이제는 데이터를 처리하는 방식을 변경하여 데이터를 분리하는 것이 더 이상 옵션이 아닙니다. 목표는 데이터를 PHP 변환을 위해 PHP 스크립트로 보내도록하는 것입니다.여러 컨트롤러의 AngularJS 스코프 개체를 단일 개체로 결합

그런데, 나는 그들에게 POST를 통해 모두 보내거나 그들이 처음으로 하나의 객체로 합쳐진 다음 전송되도록하는 방법이 필요합니다.

방금 ​​angular.extend에 대해 알아 냈습니다. 그러나 다른 컨트롤러에서 오는 개체를 결합 할 수 있는지, 그리고 그것이 수행되면 어떻게 수행되는지는 확실하지 않습니다.

새로운 컨트롤러, 서비스 또는 다른 것이 있어야합니까?

답변

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>

+0

이 난 아직도 이해가 안 그룹과 모든 controllers'에서 데이터를 수집 할이'함수가 위치해야한다? 방금 공장을 만들었고 다음 단계는 모든 컨트롤러에 공장을 포함시키는 것입니다. 자세한 내용을 제공해 주시면 도움이 될 것입니다. Thx – developer10

+0

물건을 제출해야하는 각 컨트롤러에 공장을 주입 할 수 있습니다. 팩토리는 컨트롤러에 액세스 할 수 없지만 컨트롤러는 팩토리에 액세스 할 수 있습니다. – Shomz

+0

기분이 나빠서 당신이 도우려고 노력 중이며 모든 과정을 이해하지 못합니다. 공장에서 비어있는 객체를 가지고 있고 첫 번째 컨트롤러에서 컨트롤러의 객체를 팩토리 객체에 할당한다고 가정 해 보겠습니다. 그런 다음 두 번째 컨트롤러에서 팩토리 객체에 액세스하고 (그 단계에서 첫 번째 컨트롤러의 데이터를 포함) 데이터를 기존 팩토리 객체에 첨부합니다. 이는 컨트롤러 호출간에 팩토리의 데이터가 지속되는 경우에만 작동 할 수 있습니다. – developer10

관련 문제