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

#angularjs #angularjs-scope #angularjs-service #angularjs-controller

#angularjs #angularjs-scope #angularjs-service #angularjs-контроллер

Вопрос:

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

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

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

valid.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' }
        });
});
  

valid-controller.js

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

});
  

valid-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'
        });
    };

}]);
  

Комментарии:

1. validicSrvc != validSrvc

2. Нет ли опечатки в valid-controller.js ? validicSrvc должен быть validSrvc?

Ответ №1:

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

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

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

 [ '$rootScope', '$http', function($rootScope, $http)...
  

Комментарии:

1. — Моя ошибка в контроллере, ссылающемся на validicSrvc…. Я изменил код, но пропустил это одно место. Я называю все в моем реальном коде «допустимым». -удален $ scope из сервиса -изменены параметры сервиса, чтобы отразить $ rootScope и $ http Ошибка, которую я получаю сейчас: ‘TypeError: объект не является функцией’