다른 모듈에서 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
'programing' 카테고리의 다른 글
useEffect를 사용하면 첫 번째 렌더링에 효과 적용을 생략할 수 있습니까? (0) | 2023.03.25 |
---|---|
리액트 기능 컴포넌트의 기능 화살표 또는 지방 화살표 (0) | 2023.03.25 |
Javascript에서 camelcase를 snake case로 변환하는 방법은? (0) | 2023.03.25 |
에 의해 렌더링된HTML을 찾는 방법에 의해 렌더링된HTML을 찾는 방법WordPress에서요?WordPress에서요? (0) | 2023.03.25 |
Angular에 대해 웹스톰 인텔리센스를 활성화하려면 어떻게 해야 합니까?CoffeeScript 작성 시 JS (0) | 2023.03.25 |