2014-11-26 4 views
2

FactoryApplication을 ApplicationService 팩토리에 삽입하려고합니다. 둘 다 동일한 모듈에 정의되어 있습니다.AngularJS 동일한 모듈의 다른 팩토리에 공장을 삽입하십시오.

어플리케이션 팩토리 (application.model.js)

(function(Object, coreModule) { 
    'use strict';  

    // the factory to expose that allows the creation of application instances 
    var ApplicationFactory = function() { 
     console.log("Application factory!"); 
     return {foo: 'bar'}; 
    } 

    coreModule.factory('Application', [ApplicationFactory]); 
})(Object, angular.module('core')); 

ApplicationService 공장 (application.service.js)

(function(coreModule) { 
    'use strict';  

    var ApplicationService = function(Application) { 
     var api = { 
      shout = function() {console.log(Application);} 
     }; 

     return api; 
    } 

    ApplicationService.$inject = ['Application']; 
    coreModule.factory('ApplicationService', [ApplicationService]); 
})(angular.module('core')); 

그때는 컨트롤러에 ApplicationService 공장 주입 방법을 호출있어 외침. 콘솔의 로그에서 응용 프로그램이 항상 정의되지 않은 경우 정의되지 않습니다. 컨트롤러에서 작동하는 경우 응용 프로그램이 작동합니다. 그래서 저는 두 공장이 독립적으로 작업하고 있다는 것을 알고 있습니다. 두 파일을 모두 내 index.html에서 가져오고 있습니다.

문제를 찾는 데 몇 시간을 보냈지 만 찾을 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

아래 작업 데모를 참조하십시오.

두 가지 옵션이 있습니다.

가) 여기에 대괄호 제거 :

coreModule.factory('ApplicationService', ApplicationService) 

B)를 ApplicationService 전에 첫 번째 요소로 주입 응용 프로그램 추가 :

coreModule.factory('ApplicationService', ['Application', ApplicationService]) 

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

 
app.controller('firstCtrl', function($scope, ApplicationService) { 
 

 
    ApplicationService.shout(); 
 

 
}); 
 

 

 
(function(Object, coreModule) { 
 
    'use strict'; 
 

 
    // the factory to expose that allows the creation of application instances 
 
    var ApplicationFactory = function() { 
 
    console.log("Application factory!"); 
 
    return { 
 
     foo: 'bar' 
 
    }; 
 
    }; 
 

 
    coreModule.factory('Application', [ApplicationFactory]); 
 
})(Object, angular.module('core')); 
 

 

 
(function(coreModule) { 
 
    'use strict'; 
 

 
    var ApplicationService = function(Application) { 
 
    var api = { 
 
     shout: function() { 
 
     console.log(Application); 
 
     } 
 
    }; 
 

 
    return api; 
 
    }; 
 

 
    ApplicationService.$inject = ['Application']; 
 
    coreModule.factory('ApplicationService', ApplicationService); 
 
})(angular.module('core'));
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="core"> 
 
    <div ng-controller="firstCtrl"> 
 

 
    </div> 
 
</body>

+0

오 신 나는 아무 생각이 없다 왜 내가 이것을했는지 : coreModule.factory ('ApplicationService', [ApplicationServi ce])! 그것이 일의 긴 날이었던 것을 맞힌 다 : p 많은 감사. 웬일인지 내 두뇌는 선언문을 의존성 삽입 주석과 혼합했다 : S –

관련 문제