Использование фабрики в другой фабрике не определено - AngularJS - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть фабрики под названием ReportService и IndexService.Я хочу использовать IndexService внутри ReportService.

Но в ReportService говорится, что IndexService равно undefined.Я не совсем уверен, почему.

Вот мой код:

indexService.js

angular.module('IndexService', []).factory('IndexService', ['$http', function ($http) {
    return {
        // Sending npm config from server (node) to front-end as JSON so we can use it in front-end.
        // See localhost.json.
        getConfig: function() {
            return $http.get("/api/get-config");
        }
    }
}]);

reportService.js

angular.module('ReportService', []).factory('ReportService', ['$http', 'IndexService', function ($scope, $http, IndexService) {
    // Sending npm config from server (node) to front-end as JSON so we can use it in front-end.
    // See localhost.json.
    IndexService.getConfig()
    .then(function(response) {
        var configs = response.data
    }); 

    return {
        generateExcelReport: function(searchCriteriaList) {
            var requestConfig = {
                responseType: "arraybuffer",
                headers: { "Content-Disposition": "attachment" }
            };

            // I want to call IndexService.getConfig()
            // so I can change my base URL and port based on environment. My configs are in node.js back-end
            var url = configs.url;
            var port = configs.port;

            return $http.post(url + ":" port + "/my-api-link", searchCriteriaList, requestConfig);
        },
    }
}]);

app.js

angular.module('myApp', ['ngStorage', 'ngRoute', 'appRoutes', 'IndexController', 'IndexService', 'ReportController', 'ReportService', 'PackageController', 'PackageService', 'FarmService', 'DesignService', 'UserService', 'oitozero.ngSweetAlert', 'ui.select', 'ui.materialize', 'ngSanitize', 'ngFileSaver'])

Мой скрипт index.html импортирует

<!-- Our Angular Controllers and Services JS -->
<script src="./js/controllers/indexController.js"></script>
<script src="./js/controllers/reportController.js"></script>
<script src="./js/controllers/nerdController.js"></script>
<script src="./js/controllers/packageController.js"></script>

<script src="./js/services/indexService.js"></script>
<script src="./js/services/reportService.js"></script>
<script src="./js/services/farmService.js"></script>
<script src="./js/services/packageService.js"></script>
<script src="./js/services/designService.js"></script>
<script src="./js/services/userService.js"></script>

<script src="./js/appRoutes.js"></script>
<script src="./js/app.js"></script>

Пожалуйста, помогите.Я потратил на это более 2 часов, но до сих пор не могу найти проблему .. Заранее спасибо:)

1 Ответ

1 голос
/ 26 апреля 2019

Сначала нужно ввести его, например:

angular
    .module('ReportService')
    .factory('ReportService', ReportService);

ReportService.$inject = ['IndexService'];
function ReportService(IndexService) {
// You code blah blah here
}

По крайней мере, так, как я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...