#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: объект не является функцией’