programing

다른 모듈에서 AngularJS 액세스 서비스

lovejava 2023. 3. 25. 09:11

다른 모듈에서 AngularJS 액세스 서비스

'use strict';

var trkiApp = angular.module('trkiApp', [ 
  'trkiApp.tStatus', 
  'trkiApp.feed'
]);



var tStatus = angular.module('trkiApp.tStatus', [])
    .factory('Status', ['$q']);

var feed = angular.module('trkiApp.feed', []);

다른 모듈에 정의되어 있는 서비스 상태에 어떻게 접근할 수 있는지 이해할 수 없습니다.

'use strict';

feed
    .controller('FeedController', ['$scope','$http','Status']);

그러면 안 되죠?하지만 어찌된 일인지 난... 아니면 그게 옳은 행동인가?

모듈은 부트스트랩 프로세스 중에 응용 프로그램에 적용되는 구성 및 실행 블록의 집합입니다.모듈은 다른 모듈을 의존관계로 나열할 수 있습니다.모듈에 따라서는 필요한 모듈을 로드하기 전에 필요한 모듈을 로드해야 함을 의미합니다.

var myModule = angular.module('myModule', ['module1','module2']);

모듈을 삽입하면 구성 단계에서 서비스가 등록되고 액세스할 수 있습니다. 즉, 요약하자면 Angular에서 올바른 동작과 의존성 주입의 핵심 요소입니다.예를들면

angular.module('module1').service('appservice', function(appservice) {
   var serviceCall = $http.post('api/getUser()',"Role");
});

그럼 다음 방법으로 접속하는 방법angular.module('myModule');

angular.module('myModule').controller('appservice', function(appservice)
{
    var Servicedata= appservice.ServiceCall('role');
}

이렇게 하면 접근할 수 있습니다.다른 제안이 있으면 그렇게 말해 주세요.

변경 후 html은 다음과 같습니다.

<body ng-app="myModule" ng-controller="appservices"></body>

앵귤러 모듈의 부트스트랩에 사용되는 코드의 위 섹션

angular는 다음과 같습니다.

 var myModule = angular.module('myModule', ['module1','module2']);
    myModule.controller("appservices",["$scope","mod1factory","mod2factory",function($scope,mod1factory,mod2factory){

       console.log(mod1factory.getData()) ;
       console.log(mod2factory.getData()) ;
    }]);
    var mod1 = angular.module('module1',[]);
    mod1.factory("mod1factory",function(){
        var mod1result = {};
        mod1result = {
            getData: function(){
                return "calling module 1 result";
            }
        }
        return mod1result;
    });
    var mod2 = angular.module('module2',[]);
    mod2.factory("mod2factory",function(){
        var mod2result = {};
        mod2result = {
            getData: function(){
                return "calling module 2 result";
            }
        }
        return mod2result;
    });

설명: 메인 모듈 myModule을 만들고 의존관계로 다른 모듈(여기서는 module1과 module2)을 주입합니다.이것에 의해, 메인 모듈내의 양쪽 모듈에 액세스 해, 양쪽의 데이터를 공유할 수 있습니다.

console.log(mod1factory.getData()) ;
console.log(mod2factory.getData()) ;

2개의 팩토리를 생성하여 컨트롤러 mod1factory와 mod12factory에 삽입합니다.따라서 mod1과 mod2는 둘 다 다른 모듈이지만 정보를 공유할 수 있습니다.내부 메인 컨트롤러 myModule

다른 모듈에서 종속성을 주입하려고 할 때도 비슷한 문제가 있었습니다.알렉스의 대답은 나에게 통하지 않았다.순환 종속성 오류가 발생했습니다.

이 문제를 해결하려면 모듈 고유의 JavaScript가 모두 포함되어 있는지 확인하십시오.예를들면moduleA다른 JS 파일에 정의되어 있습니다.

var app = angular.module('plunker', ['moduleA']);

app.controller('MainCtrl', function($scope, MainService) {
  $scope.name = 'World';

  $scope.hello = MainService.hello();

});

작업 예: 플런커

언급URL : https://stackoverflow.com/questions/22966858/angularjs-access-service-from-different-module