尝试从控制器调用服务方法

时间:2014-07-06 21:58:18

标签: angularjs angularjs-scope angularjs-service angularjs-controller

我试图从控制器调用服务中的方法并收到错误:

  

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

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

}]);

1 个答案:

答案 0 :(得分:1)

我看到了几个问题:

  • 在控制器中,您指的是错误的服务名称。 validicSrvc应该是validSrvc
  • 在服务中,你不应该有$ scope。 $ scope不能注入服务。
  • 服务参数使用注入的数组形式['$ http',函数($ rootScope ...等等。我相信你将$ rootScope绑定到$ http注入。你的数组应该包含所有函数的参数。

换句话说

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