Попытка вызвать метод в службе из контроллера

Я пытаюсь вызвать метод службы из контроллера и получаю сообщение об ошибке:

«TypeError: undefined не является функцией».

Кто-нибудь видит что-то не так с тем, как я все настроил?

действительный.js

angular.module('valid', [
    'ui.router',
    'valid.controllers',
    'valid.service'
]).config(function config($stateProvider) {
    $stateProvider
        .state('valid', {
            url: '/valid',
            views: {
                "main": {
                    controller: 'ValidCtrl',
                    templateUrl: 'valid/valid-template.html'
                }
            },
            data: { pageTitle: 'Valid' }
        });
});

действительный-controller.js

angular.module('valid.controllers', [
    'ui.router',
    'ngResource',
    'valid.service'
]).controller('ValidCtrl', function ($rootScope, $scope, $http, validSrvc) {
    validSrvc.getUserFitnessActivities(4510789);

});

действительный-service.js

angular.module('valid.service', [
    'ui.router',
    'ngResource'
]).service('validSrvc', ['$http', function($rootScope, $scope, $http) {
    var organizationId = '5319e5f6e5a';
    var accessToken = 'yxqSf7y';
    this.getUserFitnessActivities = function (validUserid) {
        return $http({
            url: 'https://api.mydomain.com/v1/organizations/' + organizationId + '/users/' + validicUserid + '/fitness.json?access_token=' + accessToken,
            method: 'GET'
        });
    };

}]);

person Silvestri    schedule 06.07.2014    source источник
comment
валидныйSrvc != валидныйSrvc   -  person Shomz    schedule 07.07.2014
comment
Нет ли опечатки в файле valid-controller.js? validicSrvc должен быть validSrvc?   -  person ngleich    schedule 07.07.2014


Ответы (1)


Я вижу пару проблем:

  • В контроллере вы ссылаетесь на неправильное имя службы. validicSrvc должен быть validSrvc
  • В сервисе у вас не должно быть $scope. $scope нельзя внедрить в службу.
  • Параметры сервиса используют форму массива инъекций ['$http', function($rootScope... и т. д. Я полагаю, что вы привязываете $rootScope к инъекциям $http. Ваш массив должен иметь все параметры функции.

Другими словами

[ '$rootScope', '$http', function($rootScope, $http)...
person jazeee    schedule 06.07.2014
comment
- Моя ошибка в контроллере со ссылкой на validicSrvc.... Я изменил код, но пропустил это место. Я имею в виду все в моем фактическом коде как «действительный». -удален $scope из службы -изменены параметры службы, чтобы отразить $rootScope и $http Теперь я получаю сообщение об ошибке: "TypeError: объект не является функцией" - person Silvestri; 07.07.2014