Как я могу добавить несколько факторов в angularJS

Это показывает мне неправильно

(function() {
'use strict';

angular
    .module('projectsEvaluationApp')
    .factory('EvaluationsService', EvaluationsService);
EvaluationsService.$inject = ['$resource'];

function EvaluationsService ($resource) {
    var service = $resource('api/evaluations/:id', {}, {
        'get': {
            method: 'GET',
            isArray: true
        },
        'query': {
            method: 'GET',
            isArray: true,
        }
    });

    return service;
}
  .factory('VisitService', VisitService);
})();
1
Jane Waled 12 Дек 2016 в 14:03

4 ответа

Лучший ответ

Это синтаксическая ошибка. VisitService должен быть объявлен следующим образом.

(function() {
'use strict';

    angular
        .module('projectsEvaluationApp')
        .factory('EvaluationsService', EvaluationsService) // factory one
        .factory('VisitService', VisitService); // factory two

    EvaluationsService.$inject = ['$resource'];

    function EvaluationsService ($resource) {
        var service = $resource('api/evaluations/:id', {}, {
            'get': {
                method: 'GET',
                isArray: true
            },
            'query': {
                method: 'GET',
                isArray: true,
            }
        });

        return service;
    }

    })();
0
Merlin 13 Дек 2016 в 08:32

Вы можете назначить приложение переменной и использовать его для создания нескольких Factories/Directives, например:

(function() {
    'use strict';

    app = angular.module('projectsEvaluationApp');
    app.factory('EvaluationsService', EvaluationsService);
    EvaluationsService.$inject = ['$resource'];

    function EvaluationsService($resource) {
        var service = $resource('api/evaluations/:id', {}, {
            'get': {
                method: 'GET',
                isArray: true
            },
            'query': {
                method: 'GET',
                isArray: true,
            }
        });

        return service;
    }
    app.factory('VisitService', VisitService);
})();
0
Manwal 12 Дек 2016 в 11:08

Вы можете добавить несколько фабрик в angular.module.

Угловой модуль создается один раз путем указания зависимостей.

var module = angular.module('moduleName', [])`

Далее, чтобы добавить фабрики или контроллеры к одному модулю, можно получить модуль как

var module = angular.module('moduleName')

Следующий фрагмент будет работать для вас.

    angular.module('projectsEvaluationApp')
        .factory('EvaluationsService', function($resource) {
            var service = $resource('api/evaluations/:id', {}, {
                            'get': {
                                method: 'GET',
                                isArray: true
                            },
                            'query': {
                                method: 'GET',
                                isArray: true,
                            }
                        });

            return service;
        });

    angular.module('projectsEvaluationApp')
      .factory('VisitService', function() {});
0
SaiNageswar S 12 Дек 2016 в 11:18

Решение уже дано в других ответах.

Совет: Другой способ внедрить сервис в другой (вместо использования $ inject):

app.factory('EvaluationsService', ['$resource', EvaluationsService]);

function EvaluationsService($resource) {...}
0
Ramsing Nadeem 12 Дек 2016 в 12:02