programing

다른 ng뷰에 데이터를 전달하고 컨트롤러 간에 데이터를 유지할 수 있는 우수한 설계

skycolor 2023. 3. 13. 20:19
반응형

다른 ng뷰에 데이터를 전달하고 컨트롤러 간에 데이터를 유지할 수 있는 우수한 설계

저는 AngularJS에서 개발을 시작했습니다.이것이 나의 부분적인 견해 사이에 데이터를 전달하기 위한 적절한 설계인지 헷갈린다.

지금 로더 페이지가 있어서 요청을 하고 있습니다.

function PeopleController($scope,$http,$location){
    $http.get('/location/-79.18925/43.77596').
    success(function(data){
      $scope.savePeopleResponse(data);
      $location.url('/test');
    });
}

그런 다음 /test용으로 로드되는 뷰에서

그냥 전화하는 거예요

<div ng-controller="resultController">
    <div class="blueitem">{{getResultForPeople()|json}}</div>
</div>

[결과 컨트롤러]

    function resultController($scope){
      $scope.getResultForPeople = function(){
     return $scope.getPeopleResponse();
    }
}

savePeopleResponse 및 getResultForPeople은 rootScope에서 "캐시"됩니다.

app.run(function($rootScope) {
  var peopleResponse = {};
  $rootScope.savePeopleResponse = function(data) {
   peopleResponse = data;
   console.log(data);
  }

  $rootScope.getPeopleResponse = function(){
    return peopleResponse;
  }
});

보시다시피 이 어플리케이션이 점점 커지면 매우 복잡해집니다.컨트롤러 전체에서 데이터를 유지할 수 있도록 데이터를 처리하는 가장 좋은 방법은 무엇입니까?

블로그에서 자세히 설명한 대로 자체 서비스를 작성하면 여러 컨트롤러에 걸쳐 데이터를 유지할 수 있습니다. 질문도 참고할 수 있습니다.

고객님의 경우,savePeopleResponse그리고.getPeopleResponse서비스에 접속하고 싶은 컨트롤러에 서비스를 주입합니다.

angular.module('myApp', [])
    .factory('peopleService', function () {
        var peopleResponse = {};

        return {
            savePeopleResponse:function (data) {
                peopleResponse = data;
                console.log(data);
            },
            getPeopleResponse:function () {
                return peopleResponse;
            }
        };
    });

컨트롤러의 경우 다음과 같습니다.

function resultController ($scope, peopleService) {
    $scope.getResultForPeople = peopleService.getPeopleResponse;
}

이 코드 예에서는 다음을 포함하도록 합니다.ng-app="myApp"

언급URL : https://stackoverflow.com/questions/12574765/better-design-for-passing-data-to-other-ng-views-and-persisting-it-across-contr

반응형